laravel 如何在不使用租户ID的情况下从刷新令牌中获取访问令牌?

eqoofvh9  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(129)

使用下面的URL,我得到了代码。

https://login.microsoftonline.com/common/oauth2/v2.0/authorize? 
client_id=appId
&redirect_uri=http://localhost:8000/auth/microsoft/callback
&response_type=code  
&response_mode=query  
&scope=https://graph.microsoft.com/.default
&state=12345

字符串
现在,我通过Postman生成了访问令牌和刷新令牌,参数包括代码值:

POST https://login.microsoftonline.com/common/oauth2/v2.0/token
client_id=appId
grant_type=authorization_code
scope=https://graph.microsoft.com/.default offline_access
client_secret=client_secret
code=M.C105_BAY.2.1d853a8b-20f2-xxxx-xxxx-d37779217xxx
redirect_uri=http://localhost:8000/auth/microsoft/callback


我已成功获取访问令牌和刷新令牌。
现在,我尝试在下面的API中使用刷新令牌获取访问令牌,

POST https://login.microsoftonline.com/common/oauth2/v2.0/token
grant_type:refresh_token
redirect_uri:http://localhost:8000/microsoft/sso/callback
client_id=appId
client_secret=client_secret
refresh_token:M.C105_BAY.-CcIfFlVtnsRVHLnEtb0PnIZAvXWez8thRn8rQ91qZ86nMpDUw9Wt08ezOOlzR!mlDDs*ijok5X3y1YHZ*hTSpG!jgwQdXI8atQRVGWXkV8LzJFlUXvdZnxB3PZRmFZGm!eTg5Y0TPiyXOQzWEDHkkVVOzOb91KRQ!0qCW5ayM226JMju*thcINXIZbq6aoCRo!XqUGYusb90oSGqSZrfH48mBQXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXSr0ga1X42RDpU6jRQmx6cYKFvC56D*XrfkFjwJN!y9fk0fm9Vt1xnmlignR!PfZujKQtXXXXXO35FNc$
scope:https://graph.microsoft.com/.default


我得到下面的错误,

请建议在此获得访问令牌。

n1bvdmb6

n1bvdmb61#

如果您没有在请求中正确传递Content-Type头,则通常会出现错误 “AADSTS 900144:The request body must contain the following parameter:'grant_type'”
当我在**form-data中传递请求体,并将header添加为Content-Type:application/x-www-form-urlencoded时,我也得到了相同的错误**,如下所示:

POST https://login.microsoftonline.com/common/oauth2/v2.0/token
grant_type:refresh_token
client_id=appId
client_secret=client_secret
refresh_token:refresh_token

字符串

回复:

x1c 0d1x的数据
要解决此错误,您需要删除手动添加的Content-Type:application/x-www-form-urlencoded头,或者以x-www-form-urlencoded形式传递请求正文。
在我的例子中,我以x-www-form-urlencoded的形式传递了请求体,而没有删除Content-type头,并获得了如下所示的访问令牌:

POST https://login.microsoftonline.com/common/oauth2/v2.0/token
grant_type:refresh_token
client_id=appId
client_secret=client_secret
refresh_token:refresh_token

回复:



如果您更喜欢以form-data形式传递请求体,请确保删除您手动添加的Content-Type:application/x-www-form-urlencoded头。

相关问题