Invalid_grant 请求访问令牌 MS Graph 时
Invalid_grant when requesting Access token MS Graph
感谢阅读本文。
我在使用 Postman 获取 MS Graph 的访问令牌时遇到问题。我一直在阅读关于 Whosebug 的类似帖子,但到目前为止,没有成功。在下面,我添加了一些屏幕截图,其中包含(我相信)此过程所需的所有信息。
应用权限截图:https://i.stack.imgur.com/4lyM2.png
我用来获取访问码的link:
https://login.microsoftonline.com/{Tenant ID}/oauth2/v2.0/授权?
client_id=3ef3343a-ab22-4c50-12ae2a2d7c67
&response_type=代码
&redirect_uri=https://localhost:8080
&response_mode=查询
&scope=offline_access%20user.read
&state=12345
3) 在遵循此 link 之后,我授予权限并收到一个代码,我将在以下邮递员电话中使用该代码:https://i.stack.imgur.com/ZJv2b.png
我在没有用户的情况下获取访问令牌没有问题,但不幸的是,我需要的不仅仅是应用程序权限。我希望有人能帮助我!
感谢您的宝贵时间!
您需要删除邮递员调用code
中的“代码=”,它看起来像“OAAABAAAAiL9Kn......”。 code
只是来自 /authorize
端点的“code”的值。其他的看起来都正确。
更新:
我尝试了您问题中的步骤,效果很好。
权限:
获取授权码:
https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/authorize?
client_id={client-id}
&response_type=code
&redirect_uri=https://localhost:44300/
&response_mode=query
&scope=offline_access%20user.read
&state=12345
接收代码:
https://localhost:44300/?code=0.ATcATqvJ...vv1MbCO6MN_uCAA&state=12345&session_state=7ac58b8f-b2af-45fa-be4b-0b2c2a003e2e
代码是0.ATcATqvJ...vv1MbCO6MN_uCAA
来自上一个
在 Postman 中请求:
您不能生成同时委托的单个令牌 (with a user) and Application (without a user)。您需要提出两个单独的请求。
要生成委托令牌,您首先需要检索授权码(即 authrorization_code
授权)。这是通过将用户重定向到以下地址来完成的(换行符只是为了便于阅读)
https://login.microsoftonline.com/common/oauth2/v2.0/authorize?
client_id=[APPLICATION ID]&
response_type=code&
redirect_uri=[REDIRECT URI]&
scope=[SCOPE]
这将 return 授权代码到您在 redirect_uri
参数中指定的地址(请注意,此地址必须 也 包含在您的应用中登记)。然后,您将此代码 POST
带到 /token
端点,如下所示:
https://login.microsoftonline.com/common/oauth2/v2.0/token
Content-Type: application/x-www-form-urlencoded
grant_type=authorization_code&
code=[AUTHORIZATION CODE]&
client_id=[APPLICATION ID]&
client_secret=[PASSWORD]&
scope=[SCOPE]&
redirect_uri=[REDIRECT URI]
对于应用程序令牌,您只需跳过授权代码步骤并 POST
直接到 /token
端点:
https://login.microsoftonline.com/{tenantDomain}/oauth2/v2.0/token
Content-Type: application/x-www-form-urlencoded
grant_type=client_credentials&
client_id=[APPLICATION ID]&
client_secret=[PASSWORD]&
scope=https://graph.microsoft.com/.default
感谢阅读本文。
我在使用 Postman 获取 MS Graph 的访问令牌时遇到问题。我一直在阅读关于 Whosebug 的类似帖子,但到目前为止,没有成功。在下面,我添加了一些屏幕截图,其中包含(我相信)此过程所需的所有信息。
应用权限截图:https://i.stack.imgur.com/4lyM2.png
我用来获取访问码的link:
https://login.microsoftonline.com/{Tenant ID}/oauth2/v2.0/授权? client_id=3ef3343a-ab22-4c50-12ae2a2d7c67 &response_type=代码 &redirect_uri=https://localhost:8080 &response_mode=查询 &scope=offline_access%20user.read &state=12345
3) 在遵循此 link 之后,我授予权限并收到一个代码,我将在以下邮递员电话中使用该代码:https://i.stack.imgur.com/ZJv2b.png
我在没有用户的情况下获取访问令牌没有问题,但不幸的是,我需要的不仅仅是应用程序权限。我希望有人能帮助我!
感谢您的宝贵时间!
您需要删除邮递员调用code
中的“代码=”,它看起来像“OAAABAAAAiL9Kn......”。 code
只是来自 /authorize
端点的“code”的值。其他的看起来都正确。
更新:
我尝试了您问题中的步骤,效果很好。
权限:
获取授权码:
https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/authorize?
client_id={client-id}
&response_type=code
&redirect_uri=https://localhost:44300/
&response_mode=query
&scope=offline_access%20user.read
&state=12345
接收代码:
https://localhost:44300/?code=0.ATcATqvJ...vv1MbCO6MN_uCAA&state=12345&session_state=7ac58b8f-b2af-45fa-be4b-0b2c2a003e2e
代码是0.ATcATqvJ...vv1MbCO6MN_uCAA
来自上一个
在 Postman 中请求:
您不能生成同时委托的单个令牌 (with a user) and Application (without a user)。您需要提出两个单独的请求。
要生成委托令牌,您首先需要检索授权码(即 authrorization_code
授权)。这是通过将用户重定向到以下地址来完成的(换行符只是为了便于阅读)
https://login.microsoftonline.com/common/oauth2/v2.0/authorize?
client_id=[APPLICATION ID]&
response_type=code&
redirect_uri=[REDIRECT URI]&
scope=[SCOPE]
这将 return 授权代码到您在 redirect_uri
参数中指定的地址(请注意,此地址必须 也 包含在您的应用中登记)。然后,您将此代码 POST
带到 /token
端点,如下所示:
https://login.microsoftonline.com/common/oauth2/v2.0/token
Content-Type: application/x-www-form-urlencoded
grant_type=authorization_code&
code=[AUTHORIZATION CODE]&
client_id=[APPLICATION ID]&
client_secret=[PASSWORD]&
scope=[SCOPE]&
redirect_uri=[REDIRECT URI]
对于应用程序令牌,您只需跳过授权代码步骤并 POST
直接到 /token
端点:
https://login.microsoftonline.com/{tenantDomain}/oauth2/v2.0/token
Content-Type: application/x-www-form-urlencoded
grant_type=client_credentials&
client_id=[APPLICATION ID]&
client_secret=[PASSWORD]&
scope=https://graph.microsoft.com/.default