如果颁发了新的刷新令牌,旧的刷新令牌是不是仍然有效?
Posted
技术标签:
【中文标题】如果颁发了新的刷新令牌,旧的刷新令牌是不是仍然有效?【英文标题】:Will an old refresh token still be valid if a new refresh token get issued?如果颁发了新的刷新令牌,旧的刷新令牌是否仍然有效? 【发布时间】:2021-03-11 22:33:33 【问题描述】:我的应用程序使用 Google 刷新令牌(从 Google 获取 access_token)。我有两个问题:
-
我知道 Google 刷新令牌不会过期 6 个月 (see the doc here);假设我在 1 月 1 日下午 5:00 获得了一个刷新令牌
refresh_token_old
,而我的应用程序在 1 月 1 日下午 5:30(即仅 30 分钟后)向 Google 请求另一个刷新令牌 refresh_token_new
,旧的刷新令牌会不会仍然有效(显然旧的还没有过期)? -- 基本上,我问的是新发行的 refresh_token 是否清除了旧的 refresh_token 的有效性;
对于我使用refresh_token_old
从谷歌获得的访问令牌access_token_a
,在我的应用请求新的新令牌refresh_token_new
后它仍然有效吗? -- 基本上,我问的是新的 refresh_token 是否会清除旧的 refresh_token 获得的 access_token 的有效性,即使该 access_token 尚未过期;
【问题讨论】:
【参考方案1】: 如果六个月未使用刷新令牌,它将过期。使用后,六个月的计时器将重置。 如果您请求刷新令牌,那么您的应用程序会请求另一个刷新令牌,从技术上讲,您有两个未完成的刷新令牌,两者都可以工作。您可以继续执行此操作,并在达到该点后立即拥有多达 50 个常设刷新令牌,第一个刷新令牌将过期。 使用任何刷新令牌创建的任何访问令牌都可以使用一个小时。即使创建它的刷新令牌在那一小时内已过期。创建访问令牌后,无论如何它都会工作一个小时。【讨论】:
感谢您的清晰回答,非常有帮助!我怎样才能使所有未完成的 refresh_token 无效(比如说,我怀疑有人抓住了它)? 如果您想全部撤销它们,请让用户撤销您对其帐户的权限。或者调用 Revoke 端点。除非有人还掌握了您的客户端 ID 和客户端密码,并且可以访问您在 Google 开发者控制台中配置的端点,否则他们真的无法使用刷新令牌做任何事情。以上是关于如果颁发了新的刷新令牌,旧的刷新令牌是不是仍然有效?的主要内容,如果未能解决你的问题,请参考以下文章