2013-08-05 149 views
0

在我的網站上有針對Google+和YouTube的授權流程。 用戶可以將他的Google+或YouTube帳戶添加到我的網站上的個人資料。撤銷plus.login

作用域

  1. Google+的方式:https://www.googleapis.com/auth/plus.login

  2. 的YouTube:https://www.googleapis.com/auth/youtube.readonly

當用戶都加入到他的個人資料,所以有上subtokens page兩個條目。 一個用於Google+登錄,另一個用於YouTube。

方案

用戶要刪除我的網站從配置文件中的Youtube賬戶。 =>我刪除數據庫中的條目並使用GoogleAuth函數(revokeToken())撤銷令牌。 我撤銷YouTube令牌後,subtokens page(Google+登錄)上只剩下一個條目。

但是,如果用戶只想從我的網站上的配置文件中刪除Google+,並使用相同的GoogleAuth功能(revokeToken()),那麼這兩個條目都將被撤銷,並且subtokens頁面上沒有條目。

爲什麼YouTube條目也會被撤銷?我只想撤銷Google+登錄。

有沒有解決這個問題的方法?

編輯(2013年8月6日)

當我檢查https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=TOKEN令牌,我得到以下結果:

1. YouTube的令牌:

"issued_to": "......", 

"audience": "......", 

"scope": "https://www.googleapis.com/auth/youtube.readonly", 

"expires_in": 3272, 

"access_type": "offline" 

2. Google+ Token

"issued_to": "......", 

"audience": "......", 

"user_id": "......", 

"scope": "https://www.googleapis.com/auth/plus.login", 

"expires_in": 3093, 

"access_type": "offline" 

令牌有不同的範圍,但爲什麼會被撤銷,一旦撤銷我了Google+令牌YouTube的令牌?

回答

0

https://www.googleapis.com/auth/plus.login有一個policy需要開發人員實施斷開連接。要斷開連接,您需要吊銷您的訪問令牌,這會取消您的應用程序爲該用戶請求的所有Google範圍。

我不確定爲什麼你的申請只需要一次請求https://www.googleapis.com/auth/youtube.readonly,然後在一個單獨的場合請求https://www.googleapis.com/auth/plus.login

更好的方法可能是根據用戶啓用的內容,請求具有所需示波器完整列表的單個訪問令牌。

+0

用戶應該可以選擇是否只添加Google+或YouTube(也許他不想添加YouTube或Google+,所以他添加了他想要的內容)。當他一個接一個的時候,他也可以添加到他的個人資料中。 – user2654370

+0

這就是爲什麼我分別請求「plus.login」和「youtube.readonly」的原因。 有沒有可能撤銷單個令牌(Google+或YouTube)?兩者都有不同的訪問權限和刷新標記。 當我撤銷YouTube標記時,Google+標記仍然存在。爲什麼其他方式不起作用? – user2654370

+0

請求plus.login時,不可能撤銷單個標記。我認爲預期的實施模式是,如果用戶想要連接YouTube,您只需向youtube.readonly申請一個令牌。如果他們想要訪問Google+,則需要使用youtube.readonly和plus.login(或plus.me)來申請一個新的令牌。如果他們想要取消Google+的訪問權限,您將撤消該令牌並使用youtube.readonly申請新的令牌。 – Lee