Android 自定义AccountManager=>;刷新令牌(强制或到期时间)

Android 自定义AccountManager=>;刷新令牌(强制或到期时间),android,accountmanager,Android,Accountmanager,我发现customAccountManager的一个例子有些问题。 在getAuthToken(…)方法中,无法强制刷新令牌或/和检查当前令牌是否已可用(如过期时间结束时)。那么,在下面的代码中,我如何正确地做到这一点呢 public Bundle getAuthToken(AccountAuthenticatorResponse response, Account account, String authTokenType, Bundle options) throws NetworkErro

我发现custom
AccountManager
的一个例子有些问题。 在
getAuthToken(…)
方法中,无法强制刷新令牌或/和检查当前令牌是否已可用(如过期时间结束时)。那么,在下面的代码中,我如何正确地做到这一点呢

public Bundle getAuthToken(AccountAuthenticatorResponse response, Account account, String authTokenType, Bundle options) throws NetworkErrorException {
    Log.d(TAG, "getAuthToken");
    if (!authTokenType.equals(AccountGeneral.AUTHTOKEN_TYPE_FULL_ACCESS)) {
        final Bundle result = new Bundle();
        result.putBoolean(AccountManager.KEY_BOOLEAN_RESULT, true);
        result.putString(AccountManager.KEY_ERROR_MESSAGE, "invalid authTokenType");
        return result;
    }

    final AccountManager am = AccountManager.get(context);

    String authToken = am.peekAuthToken(account, authTokenType);
    Log.d(TAG, "peekAuthToken returned - " + authToken);

    // If we get an authToken - we return it
    if (!TextUtils.isEmpty(authToken)) {
        final Bundle result = new Bundle();
        result.putBoolean(AccountManager.KEY_BOOLEAN_RESULT, true);
        result.putString(AccountManager.KEY_ACCOUNT_NAME, account.name);
        result.putString(AccountManager.KEY_ACCOUNT_TYPE, account.type);
        result.putString(AccountManager.KEY_AUTHTOKEN, authToken);
        return result;
    }

    return authenticate(response, account.name, false);
}
我认为要“强制”刷新令牌,我应该在选项包中传递一些参数(比如布尔值
强制刷新令牌“
),并检查尝试使用
刷新令牌获取新令牌是否正确。但我不确定这样做

要检查令牌是否过期,我看到的唯一方法是从帐户用户数据(使用
getUserData
)或
CredentialStore
获取过期时间。话虽如此,是否可以将凭证保存在
CredentialStore