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

Android AccountManager.getAuthToken有时返回空字符串,android,Android,当我使用Android的AccountManager为Google帐户获取身份验证令牌时,我有一个奇怪的行为 当应用程序启动时,对getAuthToken的第一次调用返回一个包,其中包含一个空字符串作为令牌。下一次,我调用相同的方法,它返回一个有效的令牌 这是我的密码: public String updateToken(final boolean invalidateToken, final Context c) { String authToken = ""; try {

当我使用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
方法中调用此方法时,似乎返回了空标记,尽管情况并非总是如此

提前谢谢。
而且我真的不知道什么时候使令牌失效。一天一次?每次创业?或者,空令牌是必须使令牌失效的指示器,尽管它在下一次调用时返回有效令牌。

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