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

时间:2017-01-25 11:03:21

标签: android accountmanager

我发现自定义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);
}

我认为这是对#34;强迫"刷新令牌,我应该在选项包中传递一些参数(如布尔"FORCE_REFRESH_TOKEN")并检查它是否为真,以尝试使用refreshtoken获取新令牌。但我不确定那样。

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

0 个答案:

没有答案