【问题标题】:Get Google OAuth2 authorised accounts获取 Google OAuth2 授权帐号
【发布时间】:2017-04-21 15:17:39
【问题描述】:

我已通过 Google 的 OAuth2 授权了多个帐户。如何获取我已授权的帐户列表?我希望能够撤消访问权限。

为了更清楚,我多次检查 OAuth2 流程,每次都选择不同的帐户。然后,我获得访问/刷新令牌并将其保存到我的数据库中。通过这样做,我注意到我仍然可以访问与最新帐户无关的资源,以及与先前授权帐户相关的资源。我希望能够列出并允许我的用户撤销对这些帐户的访问权限。

【问题讨论】:

  • 当您说“我获得访问/刷新令牌并将其保存到我的数据库”时,您是否保存了每个刷新令牌?还是您只保存一些而丢弃其他?您的问题暗示后者,但我不太明白您为什么会请求授权然后不保存令牌。
  • @pinoyyid 每个用户都有自己的令牌。每当他执行 OAuth2 身份验证时,新令牌都会覆盖现有令牌。我很困惑,因为某些资源似乎可以通过多个令牌访问,尽管它不应该是。我不确定这是我的问题还是 API(GMB API)是这样设计的。我也在这里发帖:en.advertisercommunity.com/t5/Google-My-Business-API/…
  • 您应该澄清“令牌”的含义。在 Google Oauth 中有 Refresh Tokens 和 Access Tokens。它们有不同的用途和特点。我可以建议您编辑您的问题以具体说明您要保存哪些令牌。还要澄清“用户”和“帐户”的含义。在 Google 中,用户 = 帐户,但您似乎是在说一个用户拥有多个帐户。同样,如果您可以在问题中添加更多信息,这将很有帮助,以便清楚您在问什么。
  • 在我的例子中,我使用的是 PHP 库,我传入包含两个标记的数组。我不确定这对访问权限有何影响。至于用户,我的意思是我的应用程序用户。

标签: php oauth google-api google-oauth google-api-php-client


【解决方案1】:

无法获取已对您的应用程序进行身份验证的用户列表。我也有这个问题,因为我有许多用户仍在使用我的应用程序的非常旧版本,我想通知他们应该升级但我不能,因为我没有与他们联系。

撤销已知用户的访问权限:

您的应用程序可以拥有任意数量的用户,只要您想对其进行授权。刷新令牌使您可以访问每个用户数据。访问权限将一直保留,直到用户撤销它或刷新令牌六个月未使用。

您可以通过revoking the token 以编程方式撤销它

尝试使用:

$client->revokeToken(); 

这应该撤销用户授予的旧访问权限。当然,您必须将旧的刷新令牌加载到客户端中。

【讨论】:

  • 您的回答似乎表明我只能撤销整个令牌。澄清一下,我要问的是:我的应用程序中的用户(持有一个令牌)可以使用多个 Google 帐户通过 OAuth2,因此“授权”使用多个帐户访问各种服务。但我希望能够有选择地“取消授权”一些与此令牌相关的 Google 帐户。这不可能吗?
  • 当用户对您的应用程序进行身份验证时,它是针对单个 google 帐户的。每个 google 帐户都将分配一个刷新令牌(实际上,单个用户可能有多个未完成的刷新令牌)。您需要刷新令牌来撤销它。不是实际的谷歌帐户。不,除非您跟踪不同 Google 帐户的刷新令牌,否则您想做的事情可能是不可能的。
  • 要明确的是,他的令牌绑定到一个谷歌帐户。
猜你喜欢
  • 1970-01-01
  • 2013-08-21
  • 1970-01-01
  • 2019-01-13
  • 1970-01-01
  • 1970-01-01
  • 2018-06-23
  • 1970-01-01
  • 2016-11-18
相关资源
最近更新 更多