3
以下の方法で私のサーバーとデータを同期させています。私が有効な認証トークンでログインしている場合、正常に動作します。しかし、authトークンが期限切れになった場合、それを動作させる方法がわかりません。私の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();
}