Microsoft Graph API查询具有proxyAddresses过滤器的用户

时间:2018-05-31 09:37:46

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

我正在尝试构建一个使用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属性有关,但我不知道它为什么会在资源管理器中工作而不是在这里呢?

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

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