【发布时间】:2012-02-15 18:15:21
【问题描述】:
我在短时间内多次使用刷新令牌进行测试,但我想知道 Google 刷新令牌是否会过期?我可以长时间(一周甚至几个月)使用同一个刷新令牌来一次又一次地获取另一个访问令牌吗?
【问题讨论】:
-
您使用的是 ruby,还是有相应的代码示例?
标签: google-api token access-token
我在短时间内多次使用刷新令牌进行测试,但我想知道 Google 刷新令牌是否会过期?我可以长时间(一周甚至几个月)使用同一个刷新令牌来一次又一次地获取另一个访问令牌吗?
【问题讨论】:
标签: google-api token access-token
在 OAuthv2 策略中为访问令牌和/或刷新令牌设置较长的过期时间会导致 OAuth 令牌累积并增加 Cassandra 节点上的磁盘空间使用量。
以下示例 OAuthV2 策略显示刷新令牌的过期时间为 200 天:
<OAuthV2 name="GenerateAccessToken">
<Operation>GenerateAccessToken</Operation>
<ExpiresIn>1800000</ExpiresIn> <!-- 30 minutes -->
<RefreshTokenExpiresIn>17280000000</RefreshTokenExpiresIn> <!-- 200 days -->
<SupportedGrantTypes>
<GrantType>password</GrantType>
</SupportedGrantTypes>
<GenerateResponse enabled="true"/>
在上面的例子中:
【讨论】:
如果项目发布状态为“测试”,则刷新令牌实际上会在 7 天后过期。根据谷歌文档:
为外部用户类型配置了 OAuth 同意屏幕且发布状态为“正在测试”的 Google Cloud Platform 项目发出了一个在 7 天后到期的刷新令牌。
【讨论】:
对于个人项目,只需在 Google Console“Oauth 同意屏幕”选项卡上提交应用程序以进行验证,以防止令牌过期。如果您不希望应用通过验证,则无需进一步操作。
【讨论】:
我遇到了同样的问题,后来发现我正在做的错误。 在这里发布它,以便其他人也可能会发现它有用。
以下内容可以阅读谷歌文档Using OAuth 2.0 to Access Google APIs,Refresh token expiration部分:
为外部用户类型配置了 OAuth 同意屏幕且发布状态为“正在测试”的 Google Cloud Platform 项目发出了一个在 7 天后到期的刷新令牌。
【讨论】:
从以下地址阅读:https://developers.google.com/identity/protocols/oauth2#expiration 您必须编写代码来预测授予的刷新令牌可能不再起作用的可能性。由于以下原因之一,刷新令牌可能会停止工作:
用户已撤消您应用的访问权限。 刷新令牌已六个月未使用。 用户更改了密码,并且刷新令牌包含 Gmail 范围。 用户帐户已超过授予(实时)刷新令牌的最大数量。 当前每个客户端每个用户帐户的刷新令牌限制为 50 个。如果达到限制,则创建新的刷新令牌会自动使最旧的刷新令牌失效,而不会发出警告。此限制不适用于服务帐号。
用户帐户或服务帐户在所有客户端上可以拥有的刷新令牌总数也有更大的限制。大多数普通用户不会超过此限制,但开发者的测试帐户可能会。
【讨论】:
刷新令牌的主要概念是持久且永不过期。
访问令牌有一个到期时间并且它会到期,一旦它到期我们可以去获取刷新令牌,它将被一次又一次地使用,直到用户撤销他的帐户。
【讨论】:
规则在 2017 年的某个时候发生了变化,所以我认为最好的答案是它取决于产品。例如,在 Gmail API 上,Oauth 2.0 刷新令牌会在密码更改时过期。看到这个https://support.google.com/a/answer/6328616?hl=en
我们曾经在设置新 gmail 用户时提前设置 API 访问并生成刷新令牌,然后我们可以存档他们的邮件(法律要求我们这样做),但现在只要他们更改密码,刷新令牌被撤销。
也许对于 youtube、maps 来说,刷新令牌仍然是真正长寿的,但对于 gmail api,则指望一个短令牌。
【讨论】:
Google Auth 服务器发出的刷新令牌永不过期——这就是刷新令牌的全部意义所在。 当用户撤销对您的应用程序的访问权限时,刷新令牌将过期(或者我应该说成为未经授权的)。
参考这个 doc 它清楚地说明了刷新令牌的功能。
而不是发行持久的令牌(通常有效期为一年或无限期), 服务器可以发出短期访问令牌和长期刷新令牌。 因此,简而言之,您可以一次又一次地使用刷新令牌,直到授权访问的用户撤销对您的应用程序的访问。
【讨论】:
这是一个非常令人困惑的线程。第一个答案似乎是正确的,但实际上并没有引用谷歌的任何权威。
我找到的最确定的答案实际上是在您获得令牌的开发者游乐场中。第 2 步底部有一条注释:
“注意:OAuth Playground 不存储刷新令牌,但由于刷新令牌永不过期,如果用户想要手动撤销它们,则应转到其 Google 帐户授权访问页面。”
【讨论】:
看到这个:
刷新令牌在用户撤销访问权之前一直有效。只有在授权码请求中包含 access_type=offline 时,才会出现此字段。
在https://developers.google.com/accounts/docs/OAuth2WebServer
【讨论】:
我不认为这是完全正确的:
请注意,将发行的刷新令牌的数量是有限制的;每个客户端/用户组合一个限制,所有客户端的每个用户另一个限制。您应该将刷新令牌保存在长期存储中,并在它们保持有效时继续使用它们。如果您的应用程序请求太多刷新令牌,它可能会遇到这些限制,在这种情况下,旧的刷新令牌将停止工作。
从此页面:https://developers.google.com/youtube/v3/guides/authentication#installed-apps
这是来自 youtube 文档(我发现它比其他 api 文档好得多),但我认为所有谷歌应用程序都是一样的。
【讨论】: