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