尝试刷新令牌时出现invalid_grant错误

时间:2019-05-03 07:19:15

标签: node.js azure-active-directory microsoft-graph

我正在开发一个使用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

1 个答案:

答案 0 :(得分:0)

到目前为止,我知道您正在尝试以错误的方式获取刷新令牌!

如错误所述,您正在尝试使用错误的grant_type

根据您给定的document参考,grant_type应该为authorization_code。一旦获得Code,就需要使用它来实现access tokenrefresh token

当您的访问令牌过期时,您必须以document explains的身份Use the refresh token to get a new access token

在这种情况下,请尝试使用response_type=code格式。我希望它能解决您的问题。

请求代码:

enter image description here

在Postman控制台中获取代码:

enter image description here

使用代码请求访问和刷新令牌:

enter image description here

通过代码获取访问权限和刷新令牌:

enter image description here

访问令牌到期时获取刷新令牌:

enter image description here

  

注意:这是您获取authorization code的确切方法,以及使用code获取access tokenrefresh token的确切方法在以下情况下使用refresh token更新令牌   access token已过期!

谢谢,祝您编程愉快!