使用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
方法中调用此方法时,看起来像是返回空标记,尽管情况并非总是如此。
提前致谢。 此外,我真的不知道何时使令牌无效。一天一次?每次启动?或者空标记是指示符,必须使标记无效,尽管它在下次调用时返回有效标记。
答案 0 :(得分:2)
您需要在请求令牌之前使令牌无效。
请参阅AuthToken from AccountManager in Android Client No Longer Working