【问题标题】:Microsoft Graph API filter Members of GroupMicrosoft Graph API 筛选组成员
【发布时间】:2020-08-27 05:17:31
【问题描述】:

我正在尝试使用 Microsoft Graph API 查询 Microsoft Azure Active Directory 中组的成员。在我尝试过滤结果之前,我的查询一直有效。由于过滤器子句无效,服务抛出异常Microsoft.Graph.ServiceException。我了解并非所有 Microsoft Graph API 端点都支持某些筛选子句。我想按名称过滤Members,最好使用in 子句。这可能吗?我尝试使用 startswithin 过滤子句,但都抛出相同的异常。

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();
}

【问题讨论】:

  • 'in' 子句不受图形过滤器查询参数的支持,因为它在支持startswith 和任何lambda 运算符的document 中指定。请与 requestid 分享整个错误响应。
  • 嘿,我的朋友,你少了一个右括号:正确的命令是 query.Filter($"in(displayName, '{model.SearchText}')");也许这导致了无效过滤器错误。

标签: c# microsoft-graph-api


【解决方案1】:

在 v1.0 中不支持过滤器,但如果您使用测试版,则可以通过以下几个步骤使用显示名称进行过滤。

  1. 选择 beta 端点。
  2. 在 QueryString 中添加 $count=true。
  3. 将 ConsistencyLevel = 最终添加到 Request headers

如果您在图形资源管理器中查看它,您将能够得到它,如下所示。

我使用过的查询 -

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 并添加 count() 以通过在其中添加一致性属性来查询和修改标头。

但请记住,Microsoft Graph 中 /beta 版本下的 API 可能会发生变化。不支持在生产应用程序中使用这些 API。

请通过此document 了解更多详情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多