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

时间:2012-02-08 12:39:45

标签: 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;
}

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

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

1 个答案:

答案 0 :(得分:2)

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

请参阅AuthToken from AccountManager in Android Client No Longer Working