2015-06-30 30 views
7

Podłączam GoogleAiClient do użytku z Dyskiem Google. Buduję klienta tak:Jak wyczyścić konto domyślne GoogleApiClient i poświadczenia

 GoogleApiClient.Builder(this) 
       .addApi(Drive.API) 
       .addScope(Drive.SCOPE_FILE) 
       .addConnectionCallbacks(this) 
       .addOnConnectionFailedListener(this) 
       .build(); 

Moje doświadczenie jest takie, że po raz pierwszyżądanie połączenia jest dla tego klienta, dialogowe AccountPicker przedstawiono i ekran zgoda na Dysku Google. Jeśli użytkownik wybierze konto, zgodzi się i połączenie zakończy się pomyślnie, AccountManager lub inna powiązana funkcja zapisuje wybrane konto jako konto domyślne i poświadczenia (tokeny OAuth?) Dla zakresu Dysk. W kolejnych żądaniach połączenia, dla wygody użytkownika, zapisane wartości są używane, a użytkownik nie widzi interfejsu użytkownika do wyboru konta lub zgody.

Dla celów testowania rozwoju chciałbym mieć możliwość wyczyszczenia domyślnego konta i zapisanych poświadczeń, aby móc wykonywać przetwarzanie moich niepowodzeń połączenia. Nie znalazłem sposobu, aby to zrobić. Próbowałem to bezskutecznie:

String driveScope = "https://www.googleapis.com/auth/drive.file"; 
String tokenType = "oauth2:" + driveScope; 

AccountManager.get(this).invalidateAuthToken(
    GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE, tokenType); 

Odpowiedz

9

Brzmi jak należy zadzwonić clearDefaultAccountAndReconnect() na GoogleApiClient aby usunąć wybrane informacje o koncie.

+2

Tak, to działało. Dzięki. Westchnienie - tyle zajęć, tyle metod, tak mało czasu. –

+1

To nie jest dobre rozwiązanie. GoogleApiClient musi już być podłączony, inaczej zostanie zgłoszony wyjątek. Istnieje wiele przypadków użycia, gdy użytkownik chce wybrać konto przed każdym użyciem GoogleApiClient, np. przed każdym connect(). – f470071