Android: с помощью Google войдите, чтобы получить токен доступа

Прочитав последние новости Google + здесь и здесь . Как получить токен доступа после завершения ввода?

Вы посмотрели ссылку API ?

Класс, который вы, вероятно, ищете, – com.google.android.gms.auth.GoogleAuthUtil .

Он обеспечивает, среди прочего, следующий метод:
static String getToken(Context context, String accountName, String

Описание:
Аутентифицирует пользователя и возвращает действительный токен аутентификации Google или генерирует исключение, если возникла ошибка при получении маркера.

Применение:

 String token; try { token = GoogleAuthUtil.getToken(context, accountName, scope); } catch (GooglePlayServicesAvailabilityException playEx) { Dialog dialog = GooglePlayServicesUtil.getErrorDialog( playEx.getConnectionStatusCode(), Activity.this, AUTH_REQUEST_CODE); // Use the dialog to present to the user. } catch (UserRecoverableAutException recoverableException) { Intent recoveryIntent = recoverableException.getIntent(); // Use the intent in a custom dialog or just startActivityForResult. } catch (GoogleAuthException authEx) { // This is likely unrecoverable. Log.e(TAG, "Unrecoverable authentication exception: " + authEx.getMesssage(), authEx); } catch (IOException ioEx) { Log.i(TAG, "transient error encountered: " + ioEx.getMessage()); doExponentialBackoff(); } 

Чтобы ответить на сомнения в области oauth (просто чтобы быть полезными для гуглеров):

Чтобы полностью понять, Google – это некоторые понятия аутентификации и авторизации.

Проверьте, существует ли пользователь / пароль, это часть аутентификации .

Для части авторизации требуется область действия: то, что вы уполномочены делать или получать от имени пользователя. Чтобы получить список разрешенных областей, проверьте документацию службы OAuth.

Из Google и G + наиболее распространенные области можно найти на странице https://developers.google.com/+/api/oauth?hl=pt-ZA

Например, чтобы получить всю возможную информацию от пользователя, вы можете использовать область действия:

«Адрес электронной почты openid https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/plus.me "

(Первое слово относится к протоколу, за которым следуют слова, которые запрашивают поля при ответе, а желаемые области могут быть объявлены с помощью разделителя пробелов)

Примечание. Позже, если вы попытаетесь использовать маркер доступа для запроса или сделать что-либо, о чем вы не задали, с областью действия, служба может вернуть ошибку авторизации.

Для Google хорошим инструментом, который вы можете использовать, чтобы узнать о его службе и области OAuth, является игровая площадка OAuth: https://developers.google.com/oauthplayground/

Вам нужно получить его с помощью async-задачи.

 public void onConnected(Bundle connectionHint) { // Reaching onConnected means we consider the user signed in. Log.i(TAG, "onConnected"); // Update the user interface to reflect that the user is signed in. mSignInButton.setEnabled(false); mSignOutButton.setEnabled(true); mRevokeButton.setEnabled(true); // Retrieve some profile information to personalize our app for the user. Person currentUser = Plus.PeopleApi.getCurrentPerson(mGoogleApiClient); AsyncTask<Void, Void, String > task = new AsyncTask<Void, Void, String>() { @Override protected String doInBackground(Void... params) { String token = null; final String SCOPES = "https://www.googleapis.com/auth/plus.login "; try { token = GoogleAuthUtil.getToken( getApplicationContext(), Plus.AccountApi.getAccountName(mGoogleApiClient), "oauth2:" + SCOPES); } catch (IOException e) { e.printStackTrace(); } catch (GoogleAuthException e) { e.printStackTrace(); } return token; } @Override protected void onPostExecute(String token) { Log.i(TAG, "Access token retrieved:" + token); } }; task.execute(); System.out.print("email" + email); mStatus.setText(String.format( getResources().getString(R.string.signed_in_as), currentUser.getDisplayName())); Plus.PeopleApi.loadVisible(mGoogleApiClient, null) .setResultCallback(this); // Indicate that the sign in process is complete. mSignInProgress = STATE_DEFAULT; } 

Ваш токен доступа будет сохранен в переменной токена.