- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想要做的是创建一个简单的 Microsoft Azure 应用程序,用于使用 Microsoft Graph 获取所有联系人。我想我明白它应该如何工作,但由于我未能真正使其工作,我需要一些帮助。
我设法获取与其文档网站上记录的相同的用户数据,但是当对联系人执行类似的步骤时,我不断收到NoPermissionsInAccessToken
。
我的一般工作流程是使用以下方法检索 token :
https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize
?client_id={clientId}
&response_type=code
&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2Fdetail
&response_mode=query
&scope=openid+offline_access+profile+user.read+Mail.ReadWrite+Contacts.ReadWrite
这样我就获得了授权码、刷新 token 等。现在,我将该 token 插入到 AuthorizationCodeProvider
中,与示例中提供的相同:
AuthorizationCodeProvider authProvider = new AuthorizationCodeProvider(
clientId,
Arrays.asList("openid", "offline_access", "profile", "user.read", "Mail.ReadWrite", "Contacts.ReadWrite"),
code,
"http://localhost:8080/detail",
NationalCloud.Global,
tenant,
secret);
IGraphServiceClient graphClient = GraphServiceClient
.builder()
.authenticationProvider(authProvider)
.buildClient();
IContactCollectionPage contacts = graphClient.me().contacts()
.buildRequest()
.get();
但是当应用程序尝试从最后一个函数执行 get()
时,它会抛出以下错误:
401 : Unauthorized
Strict-Transport-Security : max-age=31536000
Cache-Control : private
x-ms-ags-diagnostic : {"ServerInfo":{"DataCenter":"West Europe","Slice":"SliceC","Ring":"5","ScaleUnit":"000","RoleInstance":"AGSFE_IN_53"}}
client-request-id : e393d9d1-1eae-44b2-9956-2b97c0105b42
request-id : fecedee8-8b69-44b1-b300-5c9f71d3c427
Content-Length : 284
Date : Thu, 13 Feb 2020 13:12:27 GMT
Content-Type : application/json
{
"error": {
"code": "NoPermissionsInAccessToken",
"message": "The token contains no permissions, or permissions can not be understood.",
"innerError": {
"request-id": "fecedee8-8b69-44b1-b300-5c9f71d3c427",
"date": "2020-02-13T13:12:27"
}
}
}
据我所知,我已通过 portal.azure.com
向该应用程序提供了所有必要的资助。转到应用程序注册、我的应用程序、API 权限,并添加了记录为必要的委派 Contacts.ReadWrite 权限。
知道我能做些什么来让这件事发挥作用吗?
最佳答案
当您调用https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize
时,它返回的是授权代码,而不是访问 token 。您需要通过 https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token
将该身份验证代码交换为访问 token 。
您可以在 documentation 中找到检索 token 的分步说明。 .
Your app uses the authorization code received in the previous step to request an access token by sending a
POST
request to the/token
endpoint.
关于java - 尝试获取联系人时 Microsoft Graph NoPermissionsInAccessToken,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60210812/
我想要做的是创建一个简单的 Microsoft Azure 应用程序,用于使用 Microsoft Graph 获取所有联系人。我想我明白它应该如何工作,但由于我未能真正使其工作,我需要一些帮助。 我
在我们的部门内,我们有一个经典的 ASP 网站,该网站一直在使用我们公司的 Google 帐户进行身份验证并将事件插入到我们的 Google 日历中。该组织刚刚从 Google 切换到 Office
我追求的目标是我希望在没有任何人工交互的情况下从 Outlook 365 获取电子邮件。所以我尝试使用 MS Graph REST API 和 Java。为了获取访问 token ,我使用: reso
我正在尝试使用 https://graph.microsoft.com/v1.0/me/photo/$value 端点并按照 these 获取用户的个人资料照片指示。在我们的 React 应用程序中,
我是一名优秀的程序员,十分优秀!