【发布时间】:2012-02-08 12:39:44
【问题描述】:
在使用 Android 的 AccountManager 获取 Google 帐户的身份验证令牌时,我遇到了一个奇怪的行为。
当应用程序启动时,对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 方法中调用此方法时,似乎返回了空令牌,尽管并非总是如此。
提前致谢。 另外我真的不知道何时使令牌无效。一天一次?每次开机?或者空令牌是否指示令牌必须失效,尽管它在下一次调用时返回一个有效令牌。
【问题讨论】:
标签: android