【问题标题】:Microsoft Graph API Query Users with a filter on proxyAddressesMicrosoft Graph API 使用 proxyAddresses 上的筛选器查询用户
【发布时间】:2018-11-10 06:46:00
【问题描述】:

我正在尝试构建一个使用 Microsoft Graph API 通过电子邮件地址查找其他用户的应用。不幸的是,我还需要通过替代/代理电子邮件地址进行查找,并且我正在努力寻找 API 调用所需的范围。

使用Graph Explorer,我可以成功提交查询/beta/users?$filter=proxyAddresses/any(x:x eq 'smtp:user.name@example.com'),但是在应用程序中运行时出现权限不足错误。

{
  "code": "Authorization_RequestDenied",
  "message": "Insufficient privileges to complete the operation."
}

应用程序是使用节点和@microsoft/microsoft-graph-client NPM 包编写的,并遵循tutorial here。

查询在节点中如下所示:

let result = await client
    .api('/users')
    .version("beta")
    .filter('proxyAddresses/any(x:x eq \'smtp:' + email + '\')')
    .get();

当我使用更简单的查询时它可以工作,例如:

let result = await client
    .api('/users')
    .version("beta")
    .filter('mail eq \'' + email + '\'')
    .get();

无论我使用什么版本,我都会得到相同的结果。所以我认为它与proxyAddresses 属性有关,但我不知道为什么它会在资源管理器中工作而不是在这里?

任何帮助将不胜感激!

【问题讨论】:

  • 要求的范围是 User.Read.All

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


【解决方案1】:

这听起来像是您需要更新您的范围列表以包含一个缺失的范围。我不知道您需要什么范围,但我会在 Graph Explorer 中做的是,在您登录后,我会打开控制台并运行 tokenPlease() 以获取您的访问令牌。将 Graph Explorer 返回的访问令牌中的范围与您在应用中请求的范围进行比较,以帮助您确定仍需要请求的范围。

【讨论】:

  • 感谢 tokenPlease() 的建议,帮助很大!在我的应用程序中使用这个令牌并且权限问题消失了,所以这是一个范围问题。如果 Graph Explorer 可以告诉您请求中检查/使用/需要哪些范围,那该多好?
  • @ORogers,感谢您的反馈。这将是一个非常有用的功能。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-09
  • 1970-01-01
相关资源
最近更新 更多