2014-10-06 48 views
3

我正在努力將Google+登錄集成到一個應用程序,我現在主要工作。這裏的操作說明:谷歌Plus GoogleApiClient連接()沒有帳戶選擇對話框

https://developers.google.com/+/mobile/android/sign-in

我可以添加一個「在與谷歌」按鈕,整合來自播放服務GoogleApiClient,並允許用戶登錄到谷歌帳戶,他們的選擇。

但是,爲了符合Google的服務條款,我還想提供一種方式(在不同的活動中)讓他們完全斷開他們的Google+帳戶與應用的關聯。根據谷歌的文檔在這裏:

https://developers.google.com/+/mobile/android/sign-in#revoking_access_tokens_and_disconnecting_the_app

這是調用Plus.AccountApi.revokeAccessAndDisconnect()與連接GoogleApiClient一個簡單的事情。問題是,這需要我首先連接GoogleApiClient

獲取此類對象的過程在第一個鏈接中列出:使用GoogleApiClient.Builder構建客戶端對象,在其上調用connect(),並使用適當的回調來檢測連接成功或失敗。但是,如果用戶在其手機上擁有多個Google帳戶,那麼connect()會導致立即失敗,要求我調用解決方案意圖,這將彈出一個對話框,要求他們選擇要使用的帳戶。

但這不適用於這種情況,因爲他們已經登錄到Google+,所以我應該已經知道要使用哪個帳戶。請記住,在這一點上,我需要做的就是創建一個GoogleApiClient對象,它登錄到他們之前登錄的帳戶,然後我可以將它傳遞給Plus.AccountApi.revokeAccessAndDisconnect()。但我不知道該怎麼做。

我已經通過文件看起來和搜查的話,我能想到的解釋這個問題的每一個組合,但到目前爲止,我沒有發現任何。有沒有辦法在所有實例GoogleApiClient與特定賬戶,而不需要用戶從現有帳戶的列表中進行選擇?或者,如果沒有,是否有一些信息保存到首選項中,我可以訪問它們以獲取令牌給他們已經在我的應用中授權的帳戶?

回答

6

當然,只要我發佈這個,我偶然發現了答案。

對於任何人都好奇,這裏是你怎麼做:你只需要添加一個步驟到GoogleApiClient建設者;調用setAccountName()方法來指定要構建的API客戶對象佔。所以這個:

mGoogleApiClient = new GoogleApiClient.Builder(this) 
         .addConnectionCallbacks(this) 
         .addOnConnectionFailedListener(this) 
         .addApi(Plus.API) 
         .addScope(Plus.SCOPE_PLUS_PROFILE) 
         .build(); 

變爲這樣:

mGoogleApiClient = new GoogleApiClient.Builder(this) 
         .addConnectionCallbacks(this) 
         .addOnConnectionFailedListener(this) 
         .addApi(Plus.API) 
         .addScope(Plus.SCOPE_PLUS_PROFILE) 
         .setAccountName(<gmail address>) 
         .build(); 

然後它的作品。

+0

非常感謝我正在尋找這個方法好幾個小時! – rekire 2015-07-29 07:59:20

+0

拯救了我的一天! – ssk 2016-07-28 22:46:48

相關問題