2015-06-30 20 views
7

Collego un GoogleApiClient per l'utilizzo con Google Drive. Costruisco il cliente in questo modo:Come cancellare GoogleApiClient Account e credenziali predefiniti

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

La mia esperienza è stata che il tempo prima una richiesta di connessione è fatto per questo client, la finestra di dialogo AccountPicker è presentato e la schermata di autorizzazione per Google Drive. Se l'utente seleziona un account, acconsente e la connessione viene completata correttamente, l'AccountManager o qualche funzione correlata salva l'account selezionato come account predefinito e le credenziali (token OAuth?) Per l'ambito Drive. Nelle richieste di connessione successive, come comodità per l'utente, vengono utilizzati i valori salvati e l'utente non vede l'interfaccia utente per la selezione o il consenso dell'account.

Per il test di sviluppo, vorrei essere in grado di cancellare l'account predefinito e le credenziali salvate in modo che possa esercitare l'elaborazione della risoluzione dei problemi di connessione. Non ho trovato un modo per farlo. Ho provato questo senza successo:

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

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

risposta

9

Suona come si dovrebbe chiamare clearDefaultAccountAndReconnect() sul GoogleApiClient per cancellare le informazioni account selezionato.

+2

Sì, ha funzionato. Grazie. Sigh: tante lezioni, tanti metodi, così poco tempo. –

+1

Questa non è una buona soluzione. GoogleApiClient deve già essere collegato, altrimenti viene sollevata un'eccezione. Esiste un sacco di casi d'uso quando vuoi che un utente scelga un account prima di ogni utilizzo di GoogleApiClient ie. prima di ogni connessione(). – f470071

Problemi correlati