3

我正在将已安装的应用程序迁移到 OAuth2 并遇到了这一段

请注意,将发行的刷新令牌的数量是有限制的;每个客户端/用户组合一个限制,所有客户端的每个用户另一个限制。您应该将刷新令牌保存在长期存储中,并在它们保持有效时继续使用它们。如果您的应用程序请求太多刷新令牌,它可能会遇到这些限制,在这种情况下,较旧的刷新令牌将停止工作。

正如建议的那样,该应用程序正在存储刷新令牌,但用户可以通过在多个设备上使用它来请求多个刷新令牌。我想知道:

  • 客户端/用户组合限制是多少?

  • 如果用户超过“跨所有客户端”限制,哪个 client_id 刷新令牌会被撤销?

  • 除非用户超过这些限制或撤销它,否则给定的刷新令牌将永远不会过期?

预先感谢您的帮助。

4

3 回答 3

2

官方限制为 25。

https://developers.google.com/accounts/docs/OAuth2#expiration

There is currently a 25-token limit per Google user account. 
If a user account has 25 valid tokens, the next authentication request succeeds, 
but quietly invalidates the oldest outstanding token 
without any user-visible warning.
于 2014-04-04T10:15:31.183 回答
1

实际数字不在公共领域。它可能是特定于服务的,并且可能会不时更改。参考:https ://developers.google.com/analytics/devguides/config/mgmt/v3/mgmtAuthorization#helpme

据我了解,如果数字可以低至 25,那么当用户从第 26 台机器登录时,第 1 台机器上的帐户就会失效。

通过网络将刷新令牌存储在数据库中会是一个更好的主意。

于 2013-05-26T16:41:42.797 回答
0

@bazik 有正确的数字,25。但是......没有什么可以阻止这个数字在未来发生变化,所以不要依赖它

此外

如果用户超过“跨所有客户端”限制,哪个 client_id 刷新令牌会被撤销?

最老的

除非用户超过这些限制或撤销它,否则给定的刷新令牌将永远不会过期? 永不说永不。您的应用程序应该通过访问重新验证对话来处理这种可能性。

你确定你真的有问题吗?我相信刷新令牌对于 clientid/userid/scope 组合是唯一的。如果您的所有设备都具有相同的客户端 ID,我怀疑您将重新获得一个现有的刷新令牌,而不是一个新的。所以你永远不应该接近 25 的限制。请进行您自己的测试以确认这一点。

于 2014-04-04T14:30:28.990 回答