J'ai cette méthode ci-dessous qui synchronise les données avec mon serveur. Si je suis connecté avec un jeton d'authentification valide, cela fonctionne correctement. Mais je ne sais pas comment le faire fonctionner si le jeton d'authentification a expiré. Dans mon application iOS, je vérifie la valeur "expires_in", et si elle a expiré, j'utilise le jeton d'actualisation pour obtenir un nouveau jeton d'authentification. Mais je ne suis pas sûr de savoir comment faire la même chose en utilisant le gestionnaire de compte. Je ne suis pas sûr de l'endroit où je peux récupérer le jeton d'actualisation de l'appareil et l'envoyer à mon serveur pour obtenir le nouveau jeton d'authentification.Comment gérer les jetons d'actualisation avec le gestionnaire de compte android
Voici un exemple de méthode où je reçois le jeton:
@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
}
Et voici mon 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();
}