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
方法で呼び出されたとき、それは必ずしもそうではないのですが、空のトークンは、返されるようになります。
ありがとうございます。 また、私は本当にトークンを無効にするかわかりません。一日一回?スタートアップのたびに?または、空のトークンがインジケータであること、トークンを無効にしなければならないこと、次の呼び出しで有効なトークンを返すこと。