2012-02-08 22 views
6

Tengo un comportamiento extraño cuando uso el AccountManager de Android para obtener un token de autenticación para una cuenta de Google.AccountManager.getAuthToken devuelve cadena vacía, a veces

Cuando se inicia la aplicación, la primera llamada al getAuthToken devuelve un paquete con una cadena vacía como token. La próxima vez, llamo al mismo método, devuelve un token válido.

Aquí está mi código:

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

Parece que se devuelve el token vacío, cuando este método es llamado en el método de mi actividad onCreate, aunque no es siempre el caso.

Gracias de antemano. Además, realmente no sé cuándo invalidar el token. ¿Una vez al día? En cada puesta en marcha? O es el token vacío el indicador, que el token tiene que ser invalidado, aunque devuelve un token válido en la próxima llamada.

Respuesta

Cuestiones relacionadas