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