6
使用Android的AccountManager獲取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
方法,雖然它並非總是如此。
在此先感謝。 另外我真的不知道何時使令牌無效。一天一次?每次啓動?或者是指示符爲空的令牌,即令牌必須無效,儘管它會在下一次調用時返回有效的令牌。