List of usage examples for android.accounts AccountManager KEY_INTENT
String KEY_INTENT
To view the source code for android.accounts AccountManager KEY_INTENT.
Click Source Link
From source file:edu.mit.mobile.android.locast.accounts.AbsLocastAuthenticator.java
/** * {@inheritDoc}//w w w . ja va 2 s. co m */ @Override public Bundle getAuthToken(AccountAuthenticatorResponse response, Account account, String authTokenType, Bundle loginOptions) { if (!authTokenType.equals(getAuthTokenType())) { final Bundle result = new Bundle(); result.putString(AccountManager.KEY_ERROR_MESSAGE, "invalid authTokenType"); return result; } final AccountManager am = AccountManager.get(mContext); final String password = am.getPassword(account); if (password != null) { final Bundle accountData = onlineConfirmPassword(account, password); if (accountData != null) { final Bundle result = new Bundle(); result.putString(AccountManager.KEY_ACCOUNT_NAME, account.name); result.putString(AccountManager.KEY_ACCOUNT_TYPE, getAccountType()); result.putString(AccountManager.KEY_AUTHTOKEN, password); return result; } } // the password was missing or incorrect, return an Intent to an // Activity that will prompt the user for the password. final Intent intent = getAuthenticator(mContext); intent.putExtra(AbsLocastAuthenticatorActivity.EXTRA_USERNAME, account.name); intent.putExtra(AbsLocastAuthenticatorActivity.EXTRA_AUTHTOKEN_TYPE, authTokenType); intent.putExtra(AccountManager.KEY_ACCOUNT_AUTHENTICATOR_RESPONSE, response); final Bundle bundle = new Bundle(); bundle.putParcelable(AccountManager.KEY_INTENT, intent); return bundle; }
From source file:com.manning.androidhacks.hack023.authenticator.Authenticator.java
@Override public Bundle getAccountRemovalAllowed(AccountAuthenticatorResponse response, Account account) throws NetworkErrorException { Bundle result = super.getAccountRemovalAllowed(response, account); if (result != null && result.containsKey(AccountManager.KEY_BOOLEAN_RESULT) && !result.containsKey(AccountManager.KEY_INTENT)) { boolean allowed = result.getBoolean(AccountManager.KEY_BOOLEAN_RESULT); if (allowed) { for (int i = 0; i < authoritiesToSync.length; i++) { ContentResolver.cancelSync(account, authoritiesToSync[i]); }//from ww w.j a v a 2s . co m mContext.deleteDatabase(DatabaseHelper.DATABASE_NAME); } } return result; }
From source file:pt.up.mobile.authenticator.Authenticator.java
@Override public Bundle getAuthToken(AccountAuthenticatorResponse response, Account account, String authTokenType, Bundle loginOptions) throws NetworkErrorException { Log.v(TAG, "getAuthToken()"); // If the caller requested an authToken type we don't support, then // return an error if (!authTokenType.equals(Constants.AUTHTOKEN_TYPE)) { final Bundle result = new Bundle(); result.putString(AccountManager.KEY_ERROR_MESSAGE, "invalid authTokenType"); return result; }//from w w w. ja v a 2s . c om try { final AccountManager am = AccountManager.get(mContext); final String peek = am.peekAuthToken(account, authTokenType); if (peek != null) { final Bundle result = new Bundle(); result.putString(AccountManager.KEY_ACCOUNT_NAME, account.name); result.putString(AccountManager.KEY_ACCOUNT_TYPE, Constants.ACCOUNT_TYPE); result.putString(AccountManager.KEY_AUTHTOKEN, peek); return result; } // Extract the username and password from the Account Manager, and // ask // the server for an appropriate AuthToken. final String password = am.getPassword(account); if (password != null) { String[] reply; reply = SifeupAPI.authenticate(account.name, password, mContext); final String authToken = reply[1]; if (!TextUtils.isEmpty(authToken)) { final Bundle result = new Bundle(); result.putString(AccountManager.KEY_ACCOUNT_NAME, account.name); result.putString(AccountManager.KEY_ACCOUNT_TYPE, Constants.ACCOUNT_TYPE); result.putString(AccountManager.KEY_AUTHTOKEN, authToken); return result; } } } catch (AuthenticationException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); throw new NetworkErrorException(); } // If we get here, then we couldn't access the user's password - so we // need to re-prompt them for their credentials. We do that by creating // an intent to display our AuthenticatorActivity panel. final Intent intent = new Intent(mContext, AuthenticatorActivity.class); intent.putExtra(AuthenticatorActivity.PARAM_CONFIRM_CREDENTIALS, true); intent.putExtra(AuthenticatorActivity.PARAM_USERNAME, account.name); intent.putExtra(AuthenticatorActivity.PARAM_AUTHTOKEN_TYPE, authTokenType); intent.putExtra(AccountManager.KEY_ACCOUNT_AUTHENTICATOR_RESPONSE, response); final Bundle bundle = new Bundle(); bundle.putParcelable(AccountManager.KEY_INTENT, intent); return bundle; }
From source file:org.ohmage.auth.Authenticator.java
@Override public Bundle getAuthToken(AccountAuthenticatorResponse response, Account account, String authTokenType, Bundle loginOptions) throws NetworkErrorException { // Extract the email and refresh_token from the Account Manager, and ask // the server for a new refresh_token. String authToken = am.peekAuthToken(account, authTokenType); // Lets give another try to authenticate the user AccessToken token = null;/*from ww w .j a v a 2s .co m*/ UserRecoverableAuthException userRecoverableAuthException = null; if (TextUtils.isEmpty(authToken)) { final String refreshToken = am.getPassword(account); Log.i(TAG, "Auth token is null"); if (refreshToken != null) { Log.i(TAG, "Refresh Token"); try { // If the account credentials have not gone to the server yet we saved the // password for the user if (Boolean.parseBoolean(am.getUserData(account, USE_PASSWORD))) { token = ohmageService.getAccessToken(account.name, refreshToken); if (token != null) { am.setUserData(account, Authenticator.USE_PASSWORD, String.valueOf(false)); am.setUserData(account, Authenticator.USER_ID, token.getUserId()); } } else { // refresh token if (Ohmage.USE_DSU_DATAPOINTS_API) { Log.i(TAG, "Refresh Token with DSU"); token = ohmageService.refreshAccessToken(refreshToken, "refresh_token"); } else { token = ohmageService.getAccessToken(refreshToken); } } } catch (AuthenticationException e) { // This will happen if the refresh token was already used, or it was // invalidated or something // We can try getting the token from google String googleAccount = am.getUserData(account, USER_DATA_GOOGLE_ACCOUNT); if (googleAccount != null) { try { token = getTokenFromGoogle(googleAccount); Log.i(TAG, token.toString()); } catch (UserRecoverableAuthException e1) { userRecoverableAuthException = e1; } } } catch (RetrofitError e) { if (e.getResponse() != null && e.getResponse().getStatus() == 409) { // The user hasn't activated their account by clicking the link final Bundle bundle = new Bundle(); bundle.putString(AccountManager.KEY_AUTH_FAILED_MESSAGE, Ohmage.app().getString(R.string.account_not_activated)); bundle.putParcelable(AccountManager.KEY_INTENT, new Intent(mContext, AccountNotActivatedDialog.class)); return bundle; } else { throw new NetworkErrorException(); } } catch (Exception e) { Log.e(TAG, "", e); } } } // If we get an authToken - we return it if (token != null) { am.setPassword(account, token.getRefreshToken()); authToken = token.getAccessToken(); } if (!TextUtils.isEmpty(authToken)) { final Bundle result = new Bundle(); result.putString(AccountManager.KEY_ACCOUNT_NAME, account.name); result.putString(AccountManager.KEY_ACCOUNT_TYPE, account.type); result.putString(AccountManager.KEY_AUTHTOKEN, authToken); return result; } // If we get here, then we couldn't access the user's password - so we // need to re-prompt them for their credentials. We do that by creating // an intent to display our AuthenticatorActivity. final Intent intent = new Intent(mContext, AuthenticatorActivity.class); intent.putExtra(AccountManager.KEY_ACCOUNT_AUTHENTICATOR_RESPONSE, response); intent.putExtra(AuthenticatorActivity.EXTRA_FROM_AUTHENTICATOR, true); intent.putExtra(AuthenticatorActivity.EXTRA_HANDLE_USER_RECOVERABLE_ERROR, userRecoverableAuthException); final Bundle bundle = new Bundle(); bundle.putParcelable(AccountManager.KEY_INTENT, intent); return bundle; }
From source file:org.ohmage.auth.AuthenticatorTest.java
public void testGetAuthToken_userRecoverableErrorWhenAuthtokenFromGoogle_sendsErrorViaIntent() throws Exception { setAuthTokenCached(false);//from w w w .ja va2s . co m setAccountRefreshToken(); setAccessTokenFailure(refreshToken, new AuthenticationException("")); setHasGoogleAccount(true); UserRecoverableAuthException fakeException = new UserRecoverableAuthException("msg", new Intent()); setGetGoogleAuthTokenResult(fakeException); Bundle data = mAuthenticator.getAuthToken(null, fakeAccount, AuthUtil.AUTHTOKEN_TYPE, null); Intent intent = data.getParcelable(AccountManager.KEY_INTENT); assertNotNull(intent); assertEquals(intent.getComponent().getClassName(), AuthenticatorActivity.class.getName()); assertEquals(fakeException, intent.getSerializableExtra(AuthenticatorActivity.EXTRA_HANDLE_USER_RECOVERABLE_ERROR)); }
From source file:cl.chileagil.agileday2012.fragment.MainFragment.java
void gotAccount() { Account account = accountManager.getAccountByName(accountName); if (account == null) { chooseAccount();/*from w w w .j av a2 s. c o m*/ return; } if (authToken != null) { //Ya tengo elegido mi cuenta. //Solo si no tengo datos en la DB, lo pido, sino cargo lo que hay //y actualizo solo a peticion del usuario DatabaseAdapter dbAdapter = null; try { dbAdapter = new DatabaseAdapter(this); dbAdapter.open(); if (dbAdapter.fetchCountEvents() <= 0) { onAuthToken(); } } catch (Exception e) { e.printStackTrace(); } finally { try { dbAdapter.close(); } catch (Exception e) { e.printStackTrace(); } } return; } accountManager.getAccountManager().getAuthToken(account, AUTH_TOKEN_TYPE, true, new AccountManagerCallback<Bundle>() { public void run(AccountManagerFuture<Bundle> future) { try { Bundle bundle = future.getResult(); if (bundle.containsKey(AccountManager.KEY_INTENT)) { Intent intent = bundle.getParcelable(AccountManager.KEY_INTENT); intent.setFlags(intent.getFlags() & ~Intent.FLAG_ACTIVITY_NEW_TASK); startActivityForResult(intent, REQUEST_AUTHENTICATE); } else if (bundle.containsKey(AccountManager.KEY_AUTHTOKEN)) { setAuthToken(bundle.getString(AccountManager.KEY_AUTHTOKEN)); onAuthToken(); } } catch (Exception e) { Log.e(TAG, e.getMessage(), e); } } }, null); }
From source file:com.google.wireless.speed.speedometer.AccountSelector.java
private void getAuthToken(AccountManagerFuture<Bundle> result) { Log.i(SpeedometerApp.TAG, "getAuthToken() called, result " + result); String errMsg = "Failed to get login cookie. "; Bundle bundle;//from w w w .ja v a 2s. c o m try { bundle = result.getResult(); Intent intent = (Intent) bundle.get(AccountManager.KEY_INTENT); if (intent != null) { // User input required. (A UI will pop up for user's consent to allow // this app access account information.) Log.i(SpeedometerApp.TAG, "Starting account manager activity"); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent); } else { Log.i(SpeedometerApp.TAG, "Executing getCookie task"); synchronized (this) { this.authToken = bundle.getString(AccountManager.KEY_AUTHTOKEN); this.checkinFuture = checkinExecutor.submit(new GetCookieTask()); } } } catch (OperationCanceledException e) { Log.e(SpeedometerApp.TAG, errMsg, e); throw new RuntimeException("Can't get login cookie", e); } catch (AuthenticatorException e) { Log.e(SpeedometerApp.TAG, errMsg, e); throw new RuntimeException("Can't get login cookie", e); } catch (IOException e) { Log.e(SpeedometerApp.TAG, errMsg, e); throw new RuntimeException("Can't get login cookie", e); } }
From source file:eu.masconsult.bgbanking.accounts.AccountAuthenticator.java
@Override public Bundle getAccountRemovalAllowed(AccountAuthenticatorResponse response, Account account) throws NetworkErrorException { Log.v(TAG, "getAccountRemovalAllowed(account: " + account + ")"); Bundle result = super.getAccountRemovalAllowed(response, account); if (result != null && result.containsKey(AccountManager.KEY_BOOLEAN_RESULT) && !result.containsKey(AccountManager.KEY_INTENT)) { final boolean removalAllowed = result.getBoolean(AccountManager.KEY_BOOLEAN_RESULT); if (removalAllowed) { // Do my removal stuff here BankAccountManager.removeAccount(context, account); }//ww w . ja v a 2s. c o m } return result; }
From source file:edu.mit.mobile.android.locast.accounts.AbsLocastAuthenticator.java
/** * {@inheritDoc}/* w ww. j a v a 2s. c o m*/ */ @Override public Bundle updateCredentials(AccountAuthenticatorResponse response, Account account, String authTokenType, Bundle loginOptions) { final Intent intent = getAuthenticator(mContext); intent.putExtra(AbsLocastAuthenticatorActivity.EXTRA_USERNAME, account.name); intent.putExtra(AbsLocastAuthenticatorActivity.EXTRA_AUTHTOKEN_TYPE, authTokenType); intent.putExtra(AbsLocastAuthenticatorActivity.EXTRA_CONFIRMCREDENTIALS, false); final Bundle bundle = new Bundle(); bundle.putParcelable(AccountManager.KEY_INTENT, intent); return bundle; }
From source file:edu.mit.mobile.android.locast.accounts.Authenticator.java
/** * {@inheritDoc}//w w w .j av a 2 s . co m */ @Override public Bundle updateCredentials(AccountAuthenticatorResponse response, Account account, String authTokenType, Bundle loginOptions) { final Intent intent = new Intent(mContext, AuthenticatorActivity.class); intent.putExtra(AuthenticatorActivity.EXTRA_USERNAME, account.name); intent.putExtra(AuthenticatorActivity.EXTRA_AUTHTOKEN_TYPE, authTokenType); intent.putExtra(AuthenticatorActivity.EXTRA_CONFIRMCREDENTIALS, false); final Bundle bundle = new Bundle(); bundle.putParcelable(AccountManager.KEY_INTENT, intent); return bundle; }