【发布时间】:2017-07-04 10:27:21
【问题描述】:
我在下面有这个方法可以与我的服务器同步数据。如果我使用有效的身份验证令牌登录,它工作正常。但是如果身份验证令牌已过期,我不确定如何使其工作。在我的 iOS 应用程序中,我检查“expires_in”值,如果它已过期,我使用刷新令牌来获取新的身份验证令牌。但我不确定如何使用客户经理做同样的事情。我不确定我在哪里处理从设备获取刷新令牌并将其发送到我的服务器以获取新的身份验证令牌。
这是我获取令牌的示例方法:
@Override
public void onPerformSync(Account account, Bundle extras, String authority, ContentProviderClient provider, SyncResult syncResult) {
Intent i = new Intent("Sync Started");
mContext.sendBroadcast(i);
String token = mAccountManager.blockingGetAuthToken(account, AccountGeneral.AUTHTOKEN_TYPE_FULL_ACCESS, true);
// do sync here using token
}
这是我的 AbstractAccountAuthenticator -> getAuthToken:
@Override
public Bundle getAuthToken(AccountAuthenticatorResponse response, Account account, String authTokenType, Bundle options) throws NetworkErrorException {
Bundle result;
result = AuthHelper.getAccessTokenFromDevice(context, account, authTokenType);
if (result != null) {
return result;
}
final String refreshToken = AuthHelper.getRefreshTokenFromDevice(context, account);
if (refreshToken != null) {
result = AuthHelper.makeResultBundle(account, refreshToken, null);
return result;
}
if (AuthHelper.isAccountAvailable(context, account)) {
result = AuthHelper.makeResultBundle(account, null, null);
return result;
}
return new Bundle();
}
【问题讨论】:
标签: android oauth-2.0 accountmanager