2012-02-08 36 views
6

Mam dziwne zachowanie podczas korzystania z konta AccountManager systemu Android, aby uzyskać token uwierzytelniania dla konta Google.AccountManager.getAuthToken zwraca pusty ciąg znaków, czasami

Po uruchomieniu aplikacji pierwsze połączenie z getAuthToken zwraca pakiet z pustym łańcuchem jako tokenem. Następnym razem, wzywam tę samą metodę, zwraca prawidłowy token.

Oto mój kod:

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

Wygląda pusty znak jest zwracany, gdy ta metoda jest wywoływana w metodzie mojej działalności onCreate, choć nie zawsze jest to prawdą.

Z góry dziękuję. Również nie wiem, kiedy unieważnić token. Raz dziennie? Przy każdym uruchomieniu? Lub jest pustym tokenem wskazującym, że token musi zostać unieważniony, mimo że zwraca ważny token przy następnym wywołaniu.

Odpowiedz

Powiązane problemy