Oauth 2.0 Google OAuth 2.0离线访问
我的应用程序需要访问用户的数据,即使用户不在场。因此,我对授权码的请求包括Oauth 2.0 Google OAuth 2.0离线访问,oauth-2.0,google-oauth,Oauth 2.0,Google Oauth,我的应用程序需要访问用户的数据,即使用户不在场。因此,我对授权码的请求包括access\u type=offline,这意味着如果这是用户首次对我的应用进行身份验证,我将获得一个刷新令牌。我保存刷新令牌并在以后使用它 一切都按预期进行,并且非常好。但令我困扰的是一份声明: 请注意,刷新令牌的数量是有限制的 发布;每个客户端/用户组合有一个限制,所有客户端每次使用另一个限制。您应该长期保存刷新令牌 存储并继续使用,只要它们仍然有效。如果你的 应用程序请求的刷新令牌太多,可能会遇到以下问题 限制,在
access\u type=offline
,这意味着如果这是用户首次对我的应用进行身份验证,我将获得一个刷新令牌。我保存刷新令牌并在以后使用它
一切都按预期进行,并且非常好。但令我困扰的是一份声明:
请注意,刷新令牌的数量是有限制的
发布;每个客户端/用户组合有一个限制,所有客户端每次使用另一个限制。您应该长期保存刷新令牌
存储并继续使用,只要它们仍然有效。如果你的
应用程序请求的刷新令牌太多,可能会遇到以下问题
限制,在这种情况下,旧的刷新令牌将停止工作
如果我理解正确,如果用户授权了太多的应用程序,我保存的刷新令牌可能会变得无效?!这是正确的吗?在这种情况下,应用程序应该如何反应?要求另一个刷新令牌
提前谢谢
EDIT:我创建了一个测试PHP脚本,该脚本将从4个Google客户端请求刷新令牌(客户端指的是在开发控制台中生成的凭据)。其中三个链接到一个gmail地址,第四个链接到另一个。对于第一封电子邮件,我生成了2个项目,对于第一个项目,我生成了2个客户端ID。因此:
X
,项目A
,客户idabc
X
,项目A
,客户iddef
X
,项目B
,客户idmno
Y
,项目C
,客户idxyz
abc
请求了另外24个刷新令牌。此时,所有刷新令牌都有效,即使对于电子邮件X
我有27个刷新令牌。然后,当我为id为abc的客户端请求另一个刷新令牌时,该客户端的第一个令牌无效,因此达到了每个电子邮件/客户端组合25个令牌的限制。所有其他令牌仍然有效,我设法为客户端def
生成了新的令牌。此客户端用于相同的项目A
和相同的电子邮件X
。所以我不能达到第二个极限。这些陈述的意思对我来说仍然是一个完全的迷茫:
如果您需要授权多个程序、机器或设备,请选择一个
解决方法是限制您每台计算机授权的客户端数量
用户帐户设置为15或20。如果你是谷歌应用程序管理员,你可以
创建其他管理员用户并使用它们来授权某些
客户
请注意,刷新令牌的数量是有限制的
发布;每个客户端/用户组合有一个限制,每个用户有一个限制
跨所有客户端
事实上并没有你想象的那么糟糕刷新令牌是特定于应用程序的,这意味着特定于您的客户端id。如果用户多次安装您的应用程序,则他们有许多与您的应用程序相关的刷新令牌 如果用户让我的连接管理器在超过20个SSIS包上运行,那么我在SSIS连接管理器中遇到了这个问题—安装的第一个SSIS包将停止工作
- 用户已撤消访问权限
- 该代币已经六个月没有使用了
- 用户帐户已超过一定数量的令牌请求
因此,只要你的应用程序没有被同一个用户安装超过15次,你就不会有问题。如果出现问题,您可以建议他们为您的应用程序使用不同的/专用的登录 谢谢。但他们是在谈论访问权还是刷新令牌?我也不明白这25个代币的限制。比如说,用户martin@gmail.com授权我的应用,然后再授权25个应用。给我的应用程序的刷新令牌(最旧的)会失效吗?这就是他们所说的刷新令牌。请记住,访问令牌仅在1小时内有效。您可以使用刷新令牌来获取新令牌。您可以随时使用刷新令牌获取新的访问令牌。(顺便说一句,你是对的,Grant token有点让人困惑,我会给谷歌发一条关于这一点的说明)如果用户martin@gmail.com授权“你的应用程序”15-20倍他在你的应用程序中拥有的第一个刷新令牌将不再工作。这是您的应用程序,而不是其他人的应用程序。这是第一个限制,即每个客户端/用户组合有一个限制。但是看看第二个是怎么说的:
,所有客户端每次使用一个?!?!我该怎么读这个?好问题!我不知道他们所说的话是什么意思。但我知道该问谁。我会回复你的。我从一个谷歌开发者那里得到消息:“我不确定所有客户端的每个用户的限制是多少,但我以前没有听说过有人这样做。如果我发现了,我会让你知道的。”所以我们仍然在等待关于这意味着什么的官方信息。@DaImTo谢谢。我自己也不能达到任何其他极限。但最好还是确定一下。再次感谢。
Token expiration
You should write your code to anticipate the possibility that a granted token might
no longer work.
A token might stop working for one of these reasons: