2017-04-21 115 views
1

我已通过Google的OAuth2授权多个帐户。如何获得我已授权的帐户清单?我希望能够撤销访问权限。获取Google OAuth2授权帐户

为了更清楚地说明,我多次遍历OAuth2流,每次都选择一个不同的帐户。然后,我得到访问/刷新令牌并将其保存到我的数据库。通过这样做,我发现我仍然可以访问与最新帐户无关的资源,但也可以访问与先前授权帐户绑定的资源。我希望能够列出并允许我的用户撤销对这些帐户的访问权限。

+0

当您说“我得到访问/刷新令牌并将其保存到我的数据库”时,您是否保存每个刷新令牌?或者你只是保存一些并丢弃其他人?你的问题意味着后者,但我不太明白你为什么要求授权,然后不保存令牌。 – pinoyyid

+0

@pinoyyid每个用户都有自己的令牌。只要他执行OAuth2身份验证,新的令牌就会覆盖现有的身份。我很困惑,因为一些资源似乎可以被多个令牌访问,尽管它不应该是。我不确定这是我的问题,还是API(GMB API)是这样设计的。我也在这里发布:https://www.en.advertisercommunity.com/t5/Google-My-Business-API/Designing-application-for-multiple-users/td-p/1121514 –

+0

你应该澄清你意思是“令牌”。在Google Oauth中有刷新令牌,并且有访问令牌。这些有不同的目的和特点。我可以建议你编辑你的问题,具体哪些令牌你保存。同时澄清你的意思是“用户”和“帐户”。在Google中,用户=帐户,但您似乎在说用户拥有多个帐户。同样,如果你可以在你的问题中增加更多信息,这很有帮助,所以你很清楚你在问什么。 – pinoyyid

回答

0

无法获取已验证应用程序的用户列表。我也有这个问题,因为我有一些用户仍在使用我的应用程序的旧版本,我想告诉他们他们应该升级,但我不能,因为我没有与他们联系。

撤销已知用户的访问:

,只要你想授权给它你的应用程序可以有尽可能多的用户。刷新令牌可让您访问每个用户数据。访问权限将保留到用户撤销或刷新令牌未使用六个月。

您可以通过revoking the token

programmaticly撤销它尝试使用:

$client->revokeToken(); 

这应该撤销由用户给出的旧访问。当然,您将不得不将旧的刷新令牌加载到客户端。

+0

你的回答似乎表明我只能撤销整个令牌。为了说明问题,我在问:我的应用程序中的用户(拥有一个令牌)可以使用多个Google帐户浏览OAuth2,从而“授权”访问多个帐户的各种服务。但我希望能够选择性地“取消”与此令牌绑定的一些Google帐户。这不可能吗? –

+0

当用户验证您的应用程序时,它是一个Google帐户。每个Google帐户都会分配一个刷新令牌(实际上可以为单个用户提供几个优秀的刷新令牌)。您需要刷新令牌来撤消它。不是真正的谷歌帐户。没有你想要做的事情可能是不可能的,除非你跟踪不同谷歌账户的刷新标记。 – DaImTo

+0

要清楚他的标记绑定到一个单一的谷歌帐户。 – DaImTo