我正在开发一个node.js应用程序,它使用outlook rest API来获取邮件。使用this API。
我正在尝试使用以下请求刷新令牌。我正在使用request 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
。
2条答案
按热度按时间vnzz0bqm1#
到目前为止,我知道你试图以错误的方式获得刷新令牌。
正如错误所说,您正在尝试输入不正确的
grant_type
。根据您给定的文档参考,
grant_type
应该是authorization_code
。一旦你得到了你的Code
,那么你需要使用它来实现access token
和refresh token
。当您的访问令牌将过期,那么你必须使用刷新令牌,以获得一个新的访问令牌,如文件解释。
在这种情况下,尝试使用
response_type=code
。申请编码:
在Postman控制台获取代码:
请求访问和刷新令牌,代码:
获取访问和刷新令牌的编码:
访问令牌过期获取刷新令牌:
**注意:**这是您获得
authorization code
的确切方式,以及如何使用此代码获得access token
沿着refresh token
,最后如何在access token
到期时使用refresh token
续订令牌!svgewumm2#
当您第一次生成访问令牌时,您还将获得刷新令牌。您必须将该令牌存储在任何地方,也可以将其存储在数据库或txt文件中。
使用这个curl方法获得一个新的刷新令牌,并将这个刷新令牌更新为之前存储的旧令牌。