use of android.accounts.AuthenticatorException in project Resurrection_packages_apps_Settings by ResurrectionRemix.
the class ProtectedAccountView method asyncCheckPassword.
private void asyncCheckPassword() {
final String login = mLogin.getText().toString();
final String password = mPassword.getText().toString();
Account account = findIntendedAccount(login);
if (account == null) {
postOnCheckPasswordResult(false);
return;
}
getProgressDialog().show();
Bundle options = new Bundle();
options.putString(AccountManager.KEY_PASSWORD, password);
AccountManager.get(mContext).confirmCredentialsAsUser(account, options, null, /* activity */
new AccountManagerCallback<Bundle>() {
public void run(AccountManagerFuture<Bundle> future) {
try {
final Bundle result = future.getResult();
final boolean verified = result.getBoolean(AccountManager.KEY_BOOLEAN_RESULT);
postOnCheckPasswordResult(verified);
} catch (OperationCanceledException e) {
postOnCheckPasswordResult(false);
} catch (IOException e) {
postOnCheckPasswordResult(false);
} catch (AuthenticatorException e) {
postOnCheckPasswordResult(false);
} finally {
mLogin.post(new Runnable() {
public void run() {
getProgressDialog().hide();
}
});
}
}
}, null, /* handler */
new UserHandle(ActivityManager.getCurrentUser()));
}
use of android.accounts.AuthenticatorException in project apps-android-commons by commons-app.
the class ModificationsSyncAdapter method onPerformSync.
@Override
public void onPerformSync(Account account, Bundle bundle, String s, ContentProviderClient contentProviderClient, SyncResult syncResult) {
// This code is fraught with possibilities of race conditions, but lalalalala I can't hear you!
Cursor allModifications;
try {
allModifications = contentProviderClient.query(ModificationsContentProvider.BASE_URI, null, null, null, null);
} catch (RemoteException e) {
throw new RuntimeException(e);
}
// Exit early if nothing to do
if (allModifications == null || allModifications.getCount() == 0) {
Timber.d("No modifications to perform");
return;
}
String authCookie;
try {
authCookie = AccountManager.get(getContext()).blockingGetAuthToken(account, "", false);
} catch (OperationCanceledException | AuthenticatorException e) {
throw new RuntimeException(e);
} catch (IOException e) {
Timber.d("Could not authenticate :(");
return;
}
if (Utils.isNullOrWhiteSpace(authCookie)) {
Timber.d("Could not authenticate :(");
return;
}
MWApi api = CommonsApplication.getInstance().getMWApi();
api.setAuthCookie(authCookie);
String editToken;
ApiResult requestResult, responseResult;
try {
editToken = api.getEditToken();
} catch (IOException e) {
Timber.d("Can not retreive edit token!");
return;
}
allModifications.moveToFirst();
Timber.d("Found %d modifications to execute", allModifications.getCount());
ContentProviderClient contributionsClient = null;
try {
contributionsClient = getContext().getContentResolver().acquireContentProviderClient(ContributionsContentProvider.AUTHORITY);
while (!allModifications.isAfterLast()) {
ModifierSequence sequence = ModifierSequence.fromCursor(allModifications);
sequence.setContentProviderClient(contentProviderClient);
Contribution contrib;
Cursor contributionCursor;
try {
contributionCursor = contributionsClient.query(sequence.getMediaUri(), null, null, null, null);
} catch (RemoteException e) {
throw new RuntimeException(e);
}
contributionCursor.moveToFirst();
contrib = Contribution.fromCursor(contributionCursor);
if (contrib.getState() == Contribution.STATE_COMPLETED) {
try {
requestResult = api.action("query").param("prop", "revisions").param("rvprop", "timestamp|content").param("titles", contrib.getFilename()).get();
} catch (IOException e) {
Timber.d("Network fuckup on modifications sync!");
continue;
}
Timber.d("Page content is %s", Utils.getStringFromDOM(requestResult.getDocument()));
String pageContent = requestResult.getString("/api/query/pages/page/revisions/rev");
String processedPageContent = sequence.executeModifications(contrib.getFilename(), pageContent);
try {
responseResult = api.action("edit").param("title", contrib.getFilename()).param("token", editToken).param("text", processedPageContent).param("summary", sequence.getEditSummary()).post();
} catch (IOException e) {
Timber.d("Network fuckup on modifications sync!");
continue;
}
Timber.d("Response is %s", Utils.getStringFromDOM(responseResult.getDocument()));
String result = responseResult.getString("/api/edit/@result");
if (!result.equals("Success")) {
// FIXME: Log this somewhere else
Timber.d("Non success result! %s", result);
} else {
sequence.delete();
}
}
allModifications.moveToNext();
}
} finally {
if (contributionsClient != null) {
contributionsClient.release();
}
}
}
use of android.accounts.AuthenticatorException in project httpclient by pixmob.
the class AbstractAccountAuthenticator method generateAuthToken.
/**
* Generate an authentication token. The user must grant credential access
* when an application is using it for the first time. In this case,
* {@link UserInteractionRequiredException} is thrown, the
* {@link UserInteractionRequiredException#getUserIntent()} must be used
* with <code>startActivityForResult</code> to start a system activity, in
* order to get access to user credential. The user is free to deny
* credential access. If credential access is granted, the next call to this
* method should not throw any error.
* @see UserInteractionRequiredException#getUserIntent()
* @throws UserInteractionRequiredException
* if user interaction is required in order to perform
* authentication
* @throws HttpClientException
* if authentication failed (network error, bad credentials,
* etc...)
*/
protected final String generateAuthToken(String authTokenType) throws HttpClientException {
// Get an authentication token from the AccountManager:
// this call is asynchronous, as the user may not respond immediately.
final AccountManager am = (AccountManager) context.getSystemService(Context.ACCOUNT_SERVICE);
final AccountManagerFuture<Bundle> authResultFuture;
// Ice Cream Sandwich.
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
authResultFuture = GetTokenLegacy.INSTANCE.get(am, account, authTokenType);
} else {
authResultFuture = GetTokenICS.INSTANCE.get(am, account, authTokenType);
}
final Bundle authResult;
try {
authResult = authResultFuture.getResult();
} catch (OperationCanceledException e) {
throw new HttpClientException("Authentication failed: canceled by user", e);
} catch (AuthenticatorException e) {
throw new HttpClientException("Authentication failed", e);
} catch (IOException e) {
throw new HttpClientException("Authentication failed: network error", e);
}
if (authResult == null) {
throw new HttpClientException("Authentication failed");
}
final String authToken = authResult.getString(AccountManager.KEY_AUTHTOKEN);
if (authToken == null) {
// No authentication token found:
// the user must allow this application to use his account.
final Intent authPermIntent = (Intent) authResult.get(AccountManager.KEY_INTENT);
int flags = authPermIntent.getFlags();
flags &= ~Intent.FLAG_ACTIVITY_NEW_TASK;
authPermIntent.setFlags(flags);
// The request is aborted: the application should retry later.
throw new UserInteractionRequiredException(authPermIntent);
}
return authToken;
}
Aggregations