【问题标题】:Why does Microsoft Graph filter works in graph explorer but not in API为什么 Microsoft Graph 筛选器在图形资源管理器中有效,但在 API 中无效
【发布时间】:2021-03-29 20:10:59
【问题描述】:

我希望将过滤器应用于用户端点,这在 Graph Explorer 中有效:

https://graph.microsoft.com/v1.0/users?$count=true&$filter=endsWith(mail,'domain.co.uk')

但是在 API 上运行它会返回 Unsupported Query 如果它不受支持,为什么它可以在 Graph Explorer 中工作?

我的参考代码:

$response = $client->get("https://graph.microsoft.com/v1.0/users?\$count=true&\$filter=endsWith(mail,'domain.co.uk')", [
    'headers' => [
        'Authorization' => 'Bearer xxxtoken',
        'content-type' => 'application/json'
    ]
]);

【问题讨论】:

  • 再次检查该查询,它在我的 Graph Explorer 中不起作用。从您的代码调用时,我遇到了同样的错误。
  • 我添加了一个在资源管理器上为我工作的屏幕截图。
  • 真的很奇怪,当我在 Graph Explorer 中尝试完全相同的请求时,我收到一条 400 响应,并显示“不支持的查询”消息。尝试了 1.0 和 beta,结果相同。
  • 是的,我也不明白。
  • 好的,所以我尝试了一些过滤器(通过 API 调用,而不是通过 Graph Explorer),startsWith 工作正常,但 endsWith 根本不起作用,我尝试了其他东西,如 displayName 等。它总是同样的错误。我会说这是一个错误,有些问题。

标签: azure-active-directory microsoft-graph-api


【解决方案1】:

好吧,我也可以在邮递员中重现您的问题。

诀窍是,当您使用高级查询功能时,您需要在请求标头中添加ConsistencyLevel = eventual,然后它就可以正常工作,在您的代码中,它应该是'ConsistencyLevel' => 'eventual'。 (顺便说一句,在这种情况下不需要content-type

【讨论】:

  • 非常感谢!对我来说是的,在代码中,答案看起来像这样:client.DefaultRequestHeaders.Add("ConsistencyLevel", "eventual");
猜你喜欢
  • 2014-02-18
  • 1970-01-01
  • 2012-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-27
  • 1970-01-01
相关资源
最近更新 更多