【问题标题】:How to filter group members in Microsoft graph API?如何过滤 Microsoft 图形 API 中的组成员?
【发布时间】:2018-07-23 18:16:03
【问题描述】:

我在阅读 Microsoft 文档后确信我可以使用 OData 查询参数过滤组成员,因为https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/api/group_list_members

请求 GET URL - https://graph.microsoft.com/v1.0/groups/{groupId}/members?filter= startswith(givenname,'V')

在上面的 URL 中 groupId 使用来自https://graph.microsoft.com/v1.0/groups

但是当我尝试使用 Graph Explorer (https://developer.microsoft.com/en-us/graph/graph-explorer) 使用我的工作帐户登录来获取结果时,它不起作用。

我也尝试在 SDK 中使用它(我已经在我的代码中使用 Microsoft 图形 API SDK 实现了图形 API)但仍然遇到同样的错误。

并给出以下错误 -

{ “错误”: { "code": "Request_UnsupportedQuery", "message": "当前不支持对引用属性查询的指定过滤器。", “内部错误”:{ “请求ID”:“96f3ffef-56f5-42e3-82f2-64813106b729”, “日期”:“2018-02-13T10:59:39” } } }

这是因为“成员”不是资源类型吗?所以它没有属性,所以我们不能过滤这个结果?

如果是这样,我们还有其他方法可以获得过滤组成员吗?

还在 Github 上发布问题 - https://github.com/microsoftgraph/microsoft-graph-docs/issues/2239

【问题讨论】:

  • 我相信这是因为 /members 返回了directoryObjects 的列表。即使user 资源继承自directoryObject,您也不能在此处过滤givenName。您必须进行客户端过滤才能搜索特定成员。
  • 根据我的测试,Microsoft graph 和 Azure AD graph 都不支持您提到的针对组成​​员的筛选查询。正如 RasmusW 评论的那样,您可以检索特定组下的所有成员并在您的客户端中过滤它们。或者,您可以将您的功能请求添加到 Microsoft Graph 团队。
  • @BruceChen 谢谢。应该更正 Microsoft 文档,然后我们无法过滤组成员。
  • 我为此创建了一个 UserVoice 建议:officespdev.uservoice.com/forums/…

标签: asp.net-web-api2 azure-active-directory microsoft-graph-api


【解决方案1】:

Filtering of group members 现在可用as a beta API

GET https://graph.microsoft.com/beta/groups/{id}/members?$count=true&$filter=startswith(displayName, 'a')

【讨论】:

    【解决方案2】:

    添加 ConsistencyLevel: 最终添加到您的请求标头(也应适用于 v1.0 和 beta 版)

    【讨论】:

    • 到目前为止,此过滤器需要 ConsistencyLevel 标头和 $count 查询参数才能工作。见here
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    • 2020-12-09
    相关资源
    最近更新 更多