Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.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
Javascript 在Google Contacts API 3.0版上使用oauth2检索刷新令牌_Javascript_Node.js_Google Api_Oauth 2.0_Google Contacts Api - Fatal编程技术网

Javascript 在Google Contacts API 3.0版上使用oauth2检索刷新令牌

Javascript 在Google Contacts API 3.0版上使用oauth2检索刷新令牌,javascript,node.js,google-api,oauth-2.0,google-contacts-api,Javascript,Node.js,Google Api,Oauth 2.0,Google Contacts Api,我正在使用oauth2(node.js和库)连接到 这样做,我得到的回应如下: { access_token : "...", "token_typen": "Bearer", "expires_in" : 3600, "id_token": "..." } 我缺少用于在新访问令牌过期后立即获取新访问令牌的刷新令牌 oauth2的选项 { host: 'accounts.google.com', port: 443, path: '/o/oauth2/token', method:

我正在使用oauth2(node.js和库)连接到

这样做,我得到的回应如下:

{ access_token : "...",
"token_typen": "Bearer",
"expires_in" : 3600,
"id_token": "..." }
我缺少用于在新访问令牌过期后立即获取新访问令牌的刷新令牌

oauth2的选项

{ host: 'accounts.google.com',
  port: 443,
  path: '/o/oauth2/token',
  method: 'POST',
  headers: 
   { 'Content-Type': 'application/x-www-form-urlencoded',
     Host: 'accounts.google.com',
     'Content-Length': 247 } }
柱体 '重定向\u uri=http%3A%2F%2Flocalhost%2fouth2Callback&grant\u type=authorization\u code&client\u id=CLIENTID&client\u secret=CLIENTSECRET&type=web\u server&code=4%2F3gbiESZTEOjiyFPLUhKfE\u jr8Q'

注意:我试图将approval\u prompt=force从添加到request-post\u正文中,但这导致了一个错误

{ statusCode: 400, data: '{\n  "error" : "invalid_request"\n}' }
注意:我试图将类似问题中的approval\u prompt=force添加到request-post\u正文中,但这导致了一个错误

当您请求令牌时,不需要
approval\u提示符
param。*approval\u prompt*参数用于授权部分


我缺少刷新令牌

无法获得*刷新令牌*的唯一方法是:

  • 使用流程

  • 在授权码请求中包括

因此,请尝试将:
access\u type=offline
添加到授权码请求中

编辑

i、 e:

如果您得到的
400
是因为您添加了无效参数或缺少一个参数


祝你好运

有一次我这样做是在测试——我已经从应用程序中删除了谷歌授权令牌——所以它尝试获取另一个,但没有刷新令牌


因此,请检查您正在测试的应用程序是否未被授权用于您正在测试的帐户(这有意义吗?

谢谢您的回答。不幸的是,这也不起作用。我得到一个错误:{statusCode:400,数据:{“error”:“invalid_request”}}。谷歌只会给你一次刷新令牌。在初始身份验证之后,您将只获得访问令牌。如果您(或您的用户)通过从头访问并启动身份验证序列来删除访问权限,则可以获得新的刷新令牌。
https://accounts.google.com/o/oauth2/auth?client_id=**your_client_id**&scope=https://www.googleapis.com/auth/plus.me&redirect_uri=http://localhost&response_type=code&access_type=offline