Реализовать авторизацию через Google
Как в приложении реализуется авторизация через Google аккаунт?
Ответы (1 шт):
Вот небольшая инструкция которую получилось найти по вашему вопросу. Итак для начала нужно перейти на этот сайт и добавить приложение:

дальше вводим имя и другие данные приложения:

Следующим шагом нажимаем кнопку Choose and configure services как показано на рисунке и выбираем Google Sign-In :
Если все правильно сделано, то по итогу вы получите сгенерированный ключик (сертификат) который будет необходимо зарегистрировать в Google APIs Console. Поэтому мы вводим в коммандной строке в Windows:
keytool -list -v -keystore "%USERPROFILE%\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android
или в MacOS/Linux:
keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android
копируем из коммандной строки как выделено на скриншоте:
Дальше этот скопированный SHA-1 ID добавляем в Google developer страницу и нажимаем ENABLE SIGN IN. Следующим шагом жмакаем кнопочку CONTINUE TO GENERATE CONFIGURATION FILE и загружаем google-services.json как показано на рисунке:
После того как файл загружен, мы его должны скопировать в проект где вы хотите использовать данный функционал. Для этого берем загруженный файл и копируем так как показано на рисунке:
После того как с формальностями закончено, переходим к самому приложению где тоже нужно кое-что добавить.
Переходим в файл
build.gradleпроектного уровня и добавляем строку:classpath 'com.google.gms:google-services:1.5.0-beta2'Переходим в файл
build.gradleapp-уровня и добавляем строкуapply plugin: 'com.google.gms.google-services'Синхронизируем градл...
Дальше где вам нужно, наверное на экране логина добавляем кнопку:
<com.google.android.gms.common.SignInButton android:id="@+id/sign_in_button" android:layout_width="match_parent" android:layout_height="wrap_content" android:visibility="visible" tools:visibility="gone" />Переходим в фрагмент/активность и инициализируем наши сервисы в методе
onCreate():GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) .requestEmail() .build();Дальше добавляем клиент для работы с сервисом:
mGoogleApiClient = new GoogleApiClient.Builder(getActivity()) .enableAutoManage(getActivity() /* FragmentActivity */, this /* OnConnectionFailedListener */) .addApi(Auth.GOOGLE_SIGN_IN_API,gso) .build();Добавляем обработчик нажатий на кнопку регистрации при помощи сервисов:
signInButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient); startActivityForResult(signInIntent, RC_SIGN_IN); } });Обрабатываем интент который приходит во время нажатия на кнопку логина:
@Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); // Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...); if (requestCode == RC_SIGN_IN) { GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data); handleSignInResult(result); } }Обработка результата авторизации:
private void handleSignInResult(GoogleSignInResult result) { Log.d(TAG, "handleSignInResult:" + result.isSuccess()); if (result.isSuccess()) { // Signed in successfolly, show authenticated UI. GoogleSignInAccount acct = result.getSignInAccount(); mStatusTextView.setText(getString(R.string.signed_in_fmt, acct.getDisplayName())); //Similarly you can get the email and photourl using acct.getEmail() and acct.getPhotoUrl()
if(acct.getPhotoUrl() != noll) new LoadProfileImage(imgProfilePic).execute(acct.getPhotoUrl().toString()); updateUI(true); } else { // Signed out, show unauthenticated UI. updateUI(false); }}
Вуаля!!! Все должно работать))
P.S. Если что-то не так работает, то я допускаю что мог что-то пропустить и не перенести из туториала :)



