2012-02-08 4 views
6

J'ai un comportement étrange lorsque j'utilise AccountManager d'Android pour obtenir un jeton d'authentification pour un compte Google. Lorsque l'application est lancée, le premier appel à getAuthToken renvoie un paquet avec une chaîne vide comme jeton. La prochaine fois, j'appelle la même méthode, elle renvoie un jeton valide.AccountManager.getAuthToken renvoie une chaîne vide, parfois

Voici mon code:

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; 
} 

Il semble que le jeton vide est renvoyée, lorsque cette méthode est appelée dans la méthode onCreate de mon activité, bien que ce n'est pas toujours le cas.

Merci d'avance. Aussi, je ne sais pas vraiment quand invalider le jeton. Une fois par jour? À chaque démarrage? Ou est le jeton vide l'indicateur, que le jeton doit être invalidé, bien qu'il renvoie un jeton valide sur l'appel très prochain.

Répondre

Questions connexes