2017-04-21 110 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