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
方法,虽然它并非总是如此。
在此先感谢。 另外我真的不知道何时使令牌无效。一天一次?每次启动?或者是指示符为空的令牌,即令牌必须无效,尽管它会在下一次调用时返回有效的令牌。