我正在按照本指南进行Microsoft Graph身份验证.我能够成功完成第一个请求(对于授权代码)但是遇到了第二个请求(请求访问令牌)的问题.
第二个请求的参数(用于访问令牌):
client_id: <my id>
client_secret: <my secret>
code: <authorization code returned from first request>
redirect_uri: http://localhost:8080/Callback
grant_type: authorization_code
scope: https://graph.microsoft.com/user.read
Run Code Online (Sandbox Code Playgroud)
第二次请求出错:
{
"error": "invalid_resource",
"error_description": "AADSTS50001: Resource identifier is not provided.\r\nTrace ID: <my trace id>\r\nCorrelation ID: <my correlation id>\r\nTimestamp: 2017-05-03 15:25:42Z",
"error_codes": [
50001
],
"timestamp": "2017-05-03 15:25:42Z",
"trace_id": <my trace id>,
"correlation_id": <my correlation id>
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我添加这个额外的参数,我的请求工作正常(返回一个承载和刷新令牌):
resource: https://graph.microsoft.com/
Run Code Online (Sandbox Code Playgroud)
除了在此页面上获取访问令牌下的示例之外,我没有在文档中的任何位置看到此资源参数.
我的问题是:
编辑:请参阅下面的Marc答案以及我的评论回复.
原来我使用以下网址:
https://login.microsoftonline.com/common/oauth2/authorize
https://login.microsoftonline.com/common/oauth2/token
当我应该使用时:
https://login.microsoftonline.com/common/oauth2/v2.0/authorize
https://login.microsoftonline.com/common/oauth2/v2.0/token
使用之后v2.0
,我不再需要resource
在令牌请求中包含我的参数.
看起来您提供了正确的属性,但格式不正确。要获取令牌,您需要发出一个 POST 格式的数据为application/x-www-form-urlencoded
to https://login.microsoftonline.com/common/oauth2/v2.0/token
。从您的示例来看,您发送的数据似乎JSON
不是x-www-form-urlencoded
.
POST URL: https://login.microsoftonline.com/common/oauth2/v2.0/token
POST HEADER: Content-Type: application/x-www-form-urlencoded
POST BODY: grant_type=authorization_code&code=[AUTHORIZATION CODE]&
client_id=[APPLICATION ID]&client_secret=[PASSWORD]
&scope=[SCOPE]&redirect_uri=[REDIRECT URI]
Run Code Online (Sandbox Code Playgroud)
几个月前我写了一篇Microsoft v2 Endpoint Primer,它可能会帮助您完成整个过程。
归档时间: |
|
查看次数: |
3845 次 |
最近记录: |