当前位置: 首页 > 知识库问答 >
问题:

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

汝弘深
2023-03-14
{ 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 } }

后正文“redirect_uri=http%3a%2f%2flocalhost%2foauth2callback&grant_type=authorization_code&client_id=clientid&client_secret=clientsecret&type=web_server&code=4%2f3gbieszteojiyfpluhkfe_a_jr8q”

注意:我试图将Approval_prompt=force从一个类似的问题添加到request-post_body中,但这导致了一个错误

{ statusCode: 400, data: '{\n  "error" : "invalid_request"\n}' }

共有1个答案

毛声
2023-03-14

注意:我试图将Approval_prompt=force从一个类似的问题添加到request-post_body中,但这导致了一个错误

请求令牌时,不需要approval_prompt参数。*Approval_Prompt*param用于授权部分。

我缺少刷新令牌...

在授权代码请求中包括access_type=online参数。

因此,请尝试将:access_type=offline添加到授权代码请求中。

编辑:

即:

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

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

 类似资料:
  • 我对oauth2中的刷新令牌有点困惑。如它所说的访问令牌限制了黑客可以使用用户凭证的1小时的时间窗口,刷新令牌是万岁令牌,可以用来重新创建访问令牌。 我很困惑,如果有人从cookie中窃取了访问令牌,他也可以窃取刷新令牌,并可以使用刷新令牌创建新的访问令牌,因为我在JQuery中有ajax请求(客户端)

  • 我正在实现一个支持刷新令牌的OAuth2服务器,但是,有一些东西我不能完全理解。 当用户通过请求新的访问令牌,并且他/她请求的范围小于原始访问令牌的范围(5个范围中的3个)时。刷新令牌应该具有原始作用域还是刷新令牌应该具有请求的新作用域? > 如果刷新令牌请求了新的作用域,这是否意味着如果它们继续请求较小的作用域,它们最终将耗尽作用域? 刷新令牌是否应保留原始作用域?这意味着返回的访问令牌对于刷新

  • 当访问Google-Drive时,访问令牌可能过期,我们可以使用刷新令牌获得新的访问令牌。但是,有许多可能的原因,即刷新令牌本身停止工作或过期,请参见: https://developers.google.com/identity/protocols/oauth2#过期 所以我的问题是,如果刷新令牌在6个月后过期了会发生什么,我如何检测它?刷新访问令牌的请求是否在403被禁止的情况下失败,或者返回

  • 请求你分享你的想法。 提前道谢。

  • 用户授权Google Calendar后,NodeJS服务将代码、AccessToken和RefreshToken保存到存储中。 我也尝试将代码交换为新的令牌,但没有帮助 400错误的请求响应:{“error”:“invalid_grant”,“error_description”:“auth代码格式错误”} 尝试使用Calendar.NewService访问 }

  • 我理解客户机应用程序使用refresh_token(连同它的凭据)为最终用户(资源所有者)获取新的访问令牌,而不是存储最终用户的用户名/密码,并在每次access_token过期时发送它们。 然而,在我看来,这听起来像refresh_token和access_token一样好,它几乎只是一个额外的服务器调用,所以为什么不直接使用它,即如果refresh token是有效的授予访问权限呢?