即使用户不在场,我的应用程序也需要访问用户的数据。所以我的授权码请求包括access_type=offline
这意味着如果这是用户第一次验证我的应用程序,我将取回刷新令牌。我保存刷新令牌并稍后使用它。
一切都按预期进行并且运行得很好。但令我困扰的是其中的一个声明文档 https://developers.google.com/accounts/docs/OAuth2WebServer#refresh:
请注意,刷新令牌的数量是有限制的。
发行;每个客户端/用户组合有一个限制,以及所有客户端每次使用时的另一个。您应该长期保存刷新令牌
只要它们仍然有效,就可以存储并继续使用它们。如果你的
应用程序请求太多刷新令牌,可能会遇到这些问题
限制,在这种情况下,旧的刷新令牌将停止工作。
如果我理解正确的话,如果用户授权太多应用程序,我保存的刷新令牌可能会失效?!它是否正确?在这种情况下应用程序应该如何反应?要求另一个刷新令牌?
提前致谢。
EDIT:我创建了一个测试 PHP 脚本,该脚本将请求来自 4 个 Google 客户端的刷新令牌(我所说的客户端是指在开发控制台中生成的凭据)。其中三个链接到一个 Gmail 地址,第四个链接到另一个不同的地址。对于第一封电子邮件,我生成了 2 个项目,对于第一个项目,我生成了 2 个客户端 ID。所以:
- email
X
, 项目A
, 客户端 IDabc
- email
X
, 项目A
, 客户端 IDdef
- email
X
, 项目B
, 客户端 IDmno
- email
Y
, 项目C
, 客户端 IDxyz
我通过为每个客户端请求刷新令牌来开始测试。然后我为第一个客户端 ID 请求了 24 个以上的刷新令牌abc
。在此刻all即使对于电子邮件,刷新令牌也是有效的X
我有 27 个刷新令牌。然后当我为具有 id 的客户端请求另一个刷新令牌时abc
,该客户端的第一个令牌已失效,因此达到了每个电子邮件/客户端组合 25 个令牌的限制。所有其他令牌仍然有效,我设法为客户端生成新令牌def
。该客户是同一项目A
和相同的电子邮件X
。所以我无法达到第二个极限。这些陈述的含义对我来说仍然完全是个谜:
https://developers.google.com/accounts/docs/OAuth2#expiration https://developers.google.com/accounts/docs/OAuth2#expiration
如果您需要授权多个程序、机器或设备,则其中一个
解决方法是限制您授权的客户端数量
将用户帐户设置为 15 或 20。如果您是 Google Apps 管理员,您可以
创建额外的管理员用户并使用它们来授权某些
客户。
https://developers.google.com/accounts/docs/OAuth2WebServer#refresh https://developers.google.com/accounts/docs/OAuth2WebServer#refresh
请注意,刷新令牌的数量是有限制的。
发行;每个客户端/用户组合有一个限制,以及每个用户另一个
所有客户.