AccountManager.getAuthToken有时会返回空字符串

Kir*_*man 6 android

使用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;
}
Run Code Online (Sandbox Code Playgroud)

onCreate我的活动方法中调用此方法时,看起来像是返回空标记,尽管情况并非总是如此.

提前致谢.此外,我真的不知道何时使令牌无效.一天一次?每次启动?或者空标记是指示符,必须使标记无效,尽管它在下次调用时返回有效标记.

shk*_*der 2

您需要在请求令牌之前使令牌失效。

请参阅Android 客户端中 AccountManager 中的 AuthToken 不再工作