Android Open Source - sms-backup-plus Token Refresher From Project Back to project page sms-backup-plus .
License The source code is released under:
Apache License
If you think the Android project sms-backup-plus listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
Java Source Code package com.zegoggles.smssync.auth;
/ / f r o m w w w . j a v a 2 s . c o m
import android.accounts.Account;
import android.accounts.AccountManager;
import android.accounts.AuthenticatorException;
import android.accounts.OperationCanceledException;
import android.annotation.TargetApi;
import android.content.Context;
import android.os.Build;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import com.zegoggles.smssync.preferences.AuthPreferences;
import org.jetbrains.annotations.Nullable;
import java.io.IOException;
import static com.zegoggles.smssync.App.TAG;
import static com.zegoggles.smssync.activity.auth.AccountManagerAuthActivity.AUTH_TOKEN_TYPE;
import static com.zegoggles.smssync.activity.auth.AccountManagerAuthActivity.GOOGLE_TYPE;
@TargetApi(5)
public class TokenRefresher {
private @Nullable final AccountManager accountManager;
private AuthPreferences authPreferences;
public TokenRefresher(Context context, AuthPreferences authPreferences) {
this (Build.VERSION.SDK_INT >= 5 ? AccountManager.get(context) : null, authPreferences);
}
TokenRefresher(@Nullable AccountManager accountManager, AuthPreferences authPreferences) {
this.authPreferences = authPreferences;
this.accountManager = accountManager;
}
public void refreshOAuth2Token() throws TokenRefreshException{
if (accountManager == null) throw new TokenRefreshException("account manager is null" );
final String token = authPreferences.getOauth2Token();
final String name = authPreferences.getUsername();
if (!TextUtils.isEmpty(token)) {
invalidateToken(token);
try {
Bundle bundle = accountManager.getAuthToken(
new Account(name, GOOGLE_TYPE),
AUTH_TOKEN_TYPE,
true, /* notify on failure */
null, /* callback */
null /* handler */
).getResult();
if (bundle != null) {
String newToken = bundle.getString(AccountManager.KEY_AUTHTOKEN);
if (!TextUtils.isEmpty(newToken)) {
authPreferences.setOauth2Token(name, newToken);
} else {
throw new TokenRefreshException("no new token obtained" );
}
} else {
throw new TokenRefreshException("no bundle received from accountmanager" );
}
} catch (OperationCanceledException e) {
Log.w(TAG, e);
throw new TokenRefreshException(e);
} catch (IOException e) {
Log.w(TAG, e);
throw new TokenRefreshException(e);
} catch (AuthenticatorException e) {
Log.w(TAG, e);
throw new TokenRefreshException(e);
}
} else {
throw new TokenRefreshException("no current token set" );
}
}
public boolean invalidateToken(String token) {
if (accountManager != null) {
// USE_CREDENTIALS permission should be enough according to docs
// but some systems require MANAGE_ACCOUNTS
// java.lang.SecurityException: caller uid 10051 lacks android.permission.MANAGE_ACCOUNTS
try {
accountManager.invalidateAuthToken(GOOGLE_TYPE, token);
return true;
} catch (SecurityException e) {
Log.w(TAG, e);
}
}
return false;
}
}
Java Source Code List com.zegoggles.smssync.App.java com.zegoggles.smssync.Consts.java com.zegoggles.smssync.MmsConsts.java com.zegoggles.smssync.SmsConsts.java com.zegoggles.smssync.activity.Dialogs.java com.zegoggles.smssync.activity.MainActivity.java com.zegoggles.smssync.activity.StatusPreference.java com.zegoggles.smssync.activity.auth.AccountManagerAuthActivity.java com.zegoggles.smssync.activity.auth.WebAuthActivity.java com.zegoggles.smssync.activity.donation.DonationActivity.java com.zegoggles.smssync.auth.TokenRefreshException.java com.zegoggles.smssync.auth.TokenRefresher.java com.zegoggles.smssync.auth.XOAuthConsumer.java com.zegoggles.smssync.calendar.CalendarAccessorPost40.java com.zegoggles.smssync.calendar.CalendarAccessorPre40.java com.zegoggles.smssync.calendar.CalendarAccessor.java com.zegoggles.smssync.compat.ComposeSmsActivity.java com.zegoggles.smssync.compat.HeadlessSmsSendService.java com.zegoggles.smssync.compat.MmsReceiver.java com.zegoggles.smssync.compat.SmsReceiver.java com.zegoggles.smssync.compat.package-info.java com.zegoggles.smssync.contacts.ContactAccessorPost20.java com.zegoggles.smssync.contacts.ContactAccessorPre20.java com.zegoggles.smssync.contacts.ContactAccessor.java com.zegoggles.smssync.contacts.ContactGroupIds.java com.zegoggles.smssync.contacts.ContactGroup.java com.zegoggles.smssync.contacts.Group.java com.zegoggles.smssync.mail.AllTrustedSocketFactory.java com.zegoggles.smssync.mail.Attachment.java com.zegoggles.smssync.mail.BackupImapStore.java com.zegoggles.smssync.mail.BackupStoreConfig.java com.zegoggles.smssync.mail.CallFormatter.java com.zegoggles.smssync.mail.ConversionResult.java com.zegoggles.smssync.mail.DataType.java com.zegoggles.smssync.mail.HeaderGenerator.java com.zegoggles.smssync.mail.Headers.java com.zegoggles.smssync.mail.MessageConverter.java com.zegoggles.smssync.mail.MessageGenerator.java com.zegoggles.smssync.mail.MmsSupport.java com.zegoggles.smssync.mail.PersonLookup.java com.zegoggles.smssync.mail.PersonRecord.java com.zegoggles.smssync.preferences.AddressStyle.java com.zegoggles.smssync.preferences.AuthMode.java com.zegoggles.smssync.preferences.AuthPreferences.java com.zegoggles.smssync.preferences.BackupManagerWrapper.java com.zegoggles.smssync.preferences.CalendarPreferences.java com.zegoggles.smssync.preferences.CallLogTypes.java com.zegoggles.smssync.preferences.Defaults.java com.zegoggles.smssync.preferences.MarkAsReadTypes.java com.zegoggles.smssync.preferences.PreferenceBackupAgent.java com.zegoggles.smssync.preferences.Preferences.java com.zegoggles.smssync.preferences.ServerPreferences.java com.zegoggles.smssync.receiver.BackupBroadcastReceiver.java com.zegoggles.smssync.receiver.SmsBroadcastReceiver.java com.zegoggles.smssync.service.Alarms.java com.zegoggles.smssync.service.BackupConfig.java com.zegoggles.smssync.service.BackupCursors.java com.zegoggles.smssync.service.BackupItemsFetcher.java com.zegoggles.smssync.service.BackupQueryBuilder.java com.zegoggles.smssync.service.BackupTask.java com.zegoggles.smssync.service.BackupType.java com.zegoggles.smssync.service.BulkFetcher.java com.zegoggles.smssync.service.CalendarSyncer.java com.zegoggles.smssync.service.RestoreConfig.java com.zegoggles.smssync.service.RestoreTask.java com.zegoggles.smssync.service.ServiceBase.java com.zegoggles.smssync.service.SmsBackupService.java com.zegoggles.smssync.service.SmsRestoreService.java com.zegoggles.smssync.service.UserCanceled.java com.zegoggles.smssync.service.WhatsAppItemsFetcher.java com.zegoggles.smssync.service.exception.BackupDisabledException.java com.zegoggles.smssync.service.exception.ConnectivityException.java com.zegoggles.smssync.service.exception.LocalizableException.java com.zegoggles.smssync.service.exception.NoConnectionException.java com.zegoggles.smssync.service.exception.RequiresBackgroundDataException.java com.zegoggles.smssync.service.exception.RequiresLoginException.java com.zegoggles.smssync.service.exception.RequiresWifiException.java com.zegoggles.smssync.service.exception.SmsProviderNotWritableException.java com.zegoggles.smssync.service.state.BackupState.java com.zegoggles.smssync.service.state.RestoreState.java com.zegoggles.smssync.service.state.SmsSyncState.java com.zegoggles.smssync.service.state.State.java com.zegoggles.smssync.tasks.OAuthCallbackTask.java com.zegoggles.smssync.tasks.RequestTokenTask.java com.zegoggles.smssync.utils.AppLog.java com.zegoggles.smssync.utils.ListPreferenceHelper.java com.zegoggles.smssync.utils.Sanitizer.java com.zegoggles.smssync.utils.ThreadHelper.java