我正在按照微软网站上的分步指南(https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-auth-code-flow#refresh-the-access- token),一切正常,但每次我尝试刷新访问令牌时,都会收到此错误:AADSTS70000:提供的授权无效或格式错误。错误代码:70000。
我创建了一个邮递员集合进行测试,还从微软网站下载了官方邮递员集合,一切正常,直到访问令牌没有过期。当它过期时,尝试刷新令牌总是会导致错误,我非常坚持。我已经两次和三次检查了 redirect_url、权限、授权、复制/粘贴错误之间的对应关系,等待 access_token 过期后再尝试刷新......我已经完成了近 100 次测试,每次我都被困在刷新部分!
我首先在浏览器中对 Microsoft Login API 进行正常调用,然后从浏览器获取查询字符串中的代码(这里没有问题)(请注意 client_id 是 URL 编码的,因为在我的测试环境中,客户端 id 是一个 URL由于我们正在使用的 Drupal portan 的配置,我正在尝试在 postman 中重新创建相同的行为)
https://login.microsoftonline.com/{tenant_guid}/oauth2/v2.0/authorize?client_id={myclient_id_urlencoded}&response_type=code&redirect_uri={redirect_uri_urlencoded}&scope=offline_access%20https%3A%2F%2Fgraph.microsoft.com%2Fuser.read&state=12345
然后使用查询字符串中的代码,我 POST 到令牌端点:
POST /{tenant_guid}/oauth2/v2.0/token HTTP/1.1
Host: login.microsoftonline.com
Content-Type: application/x-www-url-form-urlencoded
cache-control: no-cache
Postman-Token: a0456a8d-6979-491f-b61e-86b5d614c577
client_id={myclient_id_urlencoded}
scope=https%3A%2F%2Fgraph.microsoft.com%2Fuser.read
redirect_uri={redirect_uri_urlencoded}
grant_type=authorization_code
client_secret={client_secret_urlencoded}
code=OAQABAAIAAADCoMpjJXrxTq9VG9te-7FXujKZhF...
我收到了一个访问令牌(在访问https://graph.microsoft.com/v1.0/me一个小时时就像一个魅力)和一个刷新令牌。当原始访问令牌过期时,我希望使用 refresh_token grant_type 获得一对新的访问/刷新令牌
POST /tenant_guid/oauth2/v2.0/token HTTP/1.1
Host: login.microsoftonline.com
Content-Type: application/x-www-url-form-urlencoded
cache-control: no-cache
Postman-Token: 5d71f813-768e-476c-a97f-c109fba3165e
client_id={myclient_id_urlencoded}
scope=https%3A%2F%2Fgraph.microsoft.com%2Fuser.read
redirect_uri={redirect_uri_urlencoded}
grant_type=refresh_token
cclient_secret={client_secret_urlencoded}
refresh_token=OAQABAAAAAADCoMpjJXrxTq9VG9te-7FX8m6YMg-.....
但是,无论我是在访问令牌到期之前还是之后尝试关闭和重新打开邮递员,我总是会收到该错误。我已经完成了近 50 次测试(始终使用完整的登录/授权以始终使用新的刷新令牌)但没有运气。
似乎我在这里错过了一些非常愚蠢的东西,因为我无法想象其他人的行为都是正确的......但真的找不到出路!