我有一个以下同步数据到服务器的方法。如果我使用有效的身份验证令牌登录,它可以正常工作。但是,如果身份验证令牌过期了,我不知道该如何使其继续工作。在我的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();
}