2012-02-08 25 views
6

Ho un comportamento strano quando utilizzo AccountManager di Android per ottenere un token di autenticazione per un account Google.AccountManager.getAuthToken restituisce una stringa vuota, a volte

All'avvio dell'app, la prima chiamata a getAuthToken restituisce un pacchetto con una stringa vuota come token. La prossima volta, chiamo lo stesso metodo, restituisce un token valido.

Ecco il mio codice:

public String updateToken(final boolean invalidateToken, final Context c) { 
    String authToken = ""; 
    try { 
     final AccountManager am = AccountManager.get(c); 
     final Account[] accounts = am.getAccountsByType("com.google"); 

     final Bundle bundle = am.getAuthToken(accounts[0], "android", true, 
       null, null).getResult(); 

     authToken = bundle.getString(AccountManager.KEY_AUTHTOKEN) 
       .toString(); 

     if (invalidateToken) { 
      am.invalidateAuthToken("com.google", authToken); 
      authToken = updateToken(false, c); 
     } 
    } catch (final Exception e) { 
     //Just for debugging issues. 
     e.printStackTrace(); 
    } 
    return authToken; 
} 

Sembra che il token vuoto viene restituito, quando questo metodo viene chiamato nel metodo della mia attività onCreate, anche se non è sempre il caso.

Grazie in anticipo. Inoltre, non so davvero quando invalidare il token. Una volta al giorno? Ad ogni avvio? Oppure il token vuoto indica che il token deve essere invalidato, sebbene restituisca un token valido alla successiva chiamata.

risposta

Problemi correlati