尝试通过skills
aboutMe
,responsibilities
,/v1.0/users/{id}?$select=skills
)时
我收到以下错误消息:
{
"error": {
"code": "-2147024891, System.UnauthorizedAccessException",
"message": "Zugriff verweigert. Sie haben keine Berechtigung, diesen Vorgang auszuführen oder auf diese Ressource zuzugreifen.",
"innerError": {
"request-id": "8a87ee26-b066-42fe-8458-1db74387a47b",
"date": "2018-02-21T15:23:30"
}
}
}
当尝试获取“姓氏”,“邮件”等属性时,不会出现问题,我会检索所需的数据。
我通过ADAL4J得到我的令牌:
service = Executors.newFixedThreadPool(1);
context = new AuthenticationContext(AUTHORITY, false, service);
result = context.acquireToken("https://graph.microsoft.com",
new ClientCredential(CLIENT_ID, SECRET), null).get();
String token = result.getAccessToken();
你知道如何在这里设置范围吗?
试图通过邮递员请求和范围获得令牌
https://graph.microsoft.com/.default
但得到了相同的结果。
我应该使用其他范围而不是.default
吗?
注意:我关注these instructions。
答案 0 :(得分:0)
我在此期间更改了应用权限,因此我不得不重做请求
https://login.microsoftonline.com/[tenant]/adminconsent?client_id=[client-id]&state=12345&redirect_uri=[redirect-uri]
管理员接受新权限后,我可以访问其他用户属性。
答案 1 :(得分:0)
您使用的OAuth流是客户端凭据授权。客户端凭据与传统的OAuth授权不同,因为用户无需进行身份验证。由于没有"用户",因此也没有机会获得用户同意(用户同意)。这使您只有一个选项,获得管理员同意(管理员同意)。换句话说,在使用客户端凭据时,始终需要管理员同意。
我写了一篇文章,概述了用户和管理员同意之间的差异,可能有助于解释这里发生的事情:Understanding the difference between User and Admin Consent。