我正在开发一个使用Outlook Rest API来获取邮件的node.js应用程序。我正在使用this API。
我正在尝试使用以下请求刷新令牌。我正在使用请求npm来调用API
{
url: 'https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/token',
method: 'POST',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
formData:
{
scope: 'offline_access User.Read Mail.Read',
client_id: 'c251b61b-c6db-4f64-89bd-7009444d1bc8',
grant_type: 'refresh_token',
redirect_uri: 'http://localhost:3000/myurl',
refresh_token: 'refresh-token',
client_secret: 'cli-secret'
}
}
但出现以下错误
{
"error": "invalid_grant",
"error_description": "AADSTS9002313: Invalid request. Request is malformed or invalid.745ec0500",
"correlation_id": "a2d87f11-0671-41f1-a5e7-654f1796c3d1"
}
我也尝试过在标头中添加Content-length
并使用&
和=
将所有变量附加到字符串中并将其发送到正文中,但是我遇到了同样的错误。我成功获得了access-token
。
答案 0 :(得分:0)
到目前为止,我知道您正在尝试以错误的方式获取刷新令牌!
如错误所述,您正在尝试使用错误的grant_type
。
根据您给定的document参考,grant_type
应该为authorization_code
。一旦获得Code
,就需要使用它来实现access token
和refresh token
。
当您的访问令牌过期时,您必须以document explains的身份Use the refresh token to get a new access token
在这种情况下,请尝试使用response_type=code
格式。我希望它能解决您的问题。
请求代码:
在Postman控制台中获取代码:
使用代码请求访问和刷新令牌:
通过代码获取访问权限和刷新令牌:
访问令牌到期时获取刷新令牌:
注意:这是您获取
authorization code
的确切方法,以及使用code
获取access token
和refresh token
的确切方法在以下情况下使用refresh token
更新令牌access token
已过期!
谢谢,祝您编程愉快!