繁体   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