2012-02-08 2 views
6

У меня странное поведение при использовании AccountManager для Android, чтобы получить токен аутентификации для учетной записи Google.AccountManager.getAuthToken возвращает пустую строку, иногда

Когда приложение запускается, первый вызов getAuthToken возвращает пучок с пустой строкой в ​​качестве токена. В следующий раз я вызову тот же самый метод, он вернет действительный токен.

Вот мой код:

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

Похоже, пустой маркер возвращается, когда этот метод вызывается в onCreate метод моей деятельности, хотя это не всегда так.

Заранее спасибо. Также я не знаю, когда следует аннулировать токен. Один раз в день? На каждом запуске? Или это пустой токен индикатора, что токен должен быть недействительным, хотя он возвращает действительный токен при следующем вызове.

ответ

Смежные вопросы