我正在尝试构建一个使用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
属性有关,但我不知道它为什么会在资源管理器中工作而不是在这里呢?
非常感谢任何帮助!
答案 0 :(得分:2)
这听起来像您需要更新范围列表以包含缺少的范围。我不知道你需要的范围是什么,但是我要做的是在Graph Explorer中,在你登录后,我打开控制台并运行tokenPlease()来获取你的访问令牌。将Graph Explorer返回的访问令牌中的范围与您在应用中请求的范围进行比较,以帮助您确定仍需要请求的范围。