Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 尝试刷新令牌时出现无效的_grant错误_Node.js_Azure Active Directory_Microsoft Graph Api - Fatal编程技术网

Node.js 尝试刷新令牌时出现无效的_grant错误

Node.js 尝试刷新令牌时出现无效的_grant错误,node.js,azure-active-directory,microsoft-graph-api,Node.js,Azure Active Directory,Microsoft Graph Api,我正在开发一个node.js应用程序,它使用outlook rest API获取邮件。我正在使用API 我正在尝试使用以下请求刷新令牌。我使用请求npm来调用API { url: 'https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/token', method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded' },

我正在开发一个node.js应用程序,它使用outlook rest API获取邮件。我正在使用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"
}

我还尝试在标题中添加
内容长度
,并使用
&
=
将所有变量追加到字符串中,然后将其发送到正文中,但我得到了相同的错误。我正在成功获取一个
访问令牌。

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

正如错误所说,您尝试的
授权类型不正确

根据您给定的参考,
grant\u type
应为
authorization\u code
。一旦获得
代码
,您就需要使用它来实现
访问令牌
刷新令牌

当您的访问令牌过期时,您必须
使用刷新令牌来获取新的访问令牌

在这种情况下,尝试使用
response\u type=code
格式。我希望它能解决你的问题

代码请求:

在邮递员控制台中获取代码:

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

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

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

注意:这就是您获取
授权码的确切方式,以及使用此
代码
如何获取
访问令牌
刷新
令牌
最后,当
访问令牌
已过期


谢谢你,快乐编码

您检索
access\u令牌的初始调用是什么样子的?