簡體   English   中英

Microsoft Graph API 篩選器組成員

[英]Microsoft Graph API filter Members of Group

我正在嘗試使用 Microsoft Graph API 在 Microsoft Azure Active Directory 中查詢組的成員。 在我嘗試過濾結果之前,我的查詢一直有效。 由於過濾器子句無效,該服務會引發異常Microsoft.Graph.ServiceException 我了解並非所有 Microsoft Graph API 端點都支持某些過濾器子句。 我想按名稱過濾Members ,最好使用in子句。 這可能嗎? 我嘗試使用startswithin filter 子句,但都拋出相同的異常。

GraphServiceClient client = GetGraphServiceClient(token);
const string graphProperties = "id,givenName,surname,userPrincipalName,jobTitle,department,officeLocation,businessPhones,mobilePhone,mail";
IGroupMembersCollectionWithReferencesRequest query = client.Groups[Settings.IntranetObjectID].Members.Request().Select(graphProperties);
if (!string.IsNullOrWhiteSpace(model.SearchText))
{
    query.Filter($"in(displayName, '{model.SearchText}'");
}
IGroupMembersCollectionWithReferencesPage members = await query.Top(PageSize).GetAsync();
model.StaffMembers = new List<StaffMember>();
while (members.Count > 0)
{
    foreach (DirectoryObject member in members)
    {
        if (member is User user)
        {
            model.StaffMembers.Add(new StaffMember(user));
        }
    }

    if (members.NextPageRequest == null)
    {
        break;
    }

    members = await members.NextPageRequest.GetAsync();
}

在 v1.0 中不支持過濾器,但如果您使用測試版,您可以通過以下幾個步驟使用顯示名稱進行過濾。

  1. 選擇 beta 端點。
  2. 在 QueryString 中添加 $count=true。
  3. 將 ConsistencyLevel = eventual 添加到請求標頭

如果您在圖形資源管理器中檢查它,您將能夠獲得它,如下所示。

我使用過的查詢 -

https://graph.microsoft.com/beta/groups/aba04a76-ee5e-4e43-a9d6-0d451e1e3e2d/members?$count=true&$select=id,businessPhones,displayName&$filter=displayName eq 'Andrea Simandi (CELA)'

在此處輸入圖片說明

由於您使用的是 SDK,因此您需要使用 Microsoft.Graph.Beta an,添加 count() 以通過在其中添加一致性屬性來查詢和修改標頭。

但請記住,Microsoft Graph 中 /beta 版本下的 API 可能會發生變化。 不支持在生產應用程序中使用這些 API。

請仔細閱讀此文檔以獲取更多詳細信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM