Ошибка входа в Google 12500


107

Я пытаюсь интегрировать Google Sign In в свое приложение. У меня нет внутреннего сервера, я просто получаю сведения о зарегистрированной учетной записи Google в свое приложение.

Сначала я попробовал это с помощью примера входа в Google, но у меня возникла ошибка (никаких изменений кода не производилось, кроме печати трассировки стека ниже). Я просто использовал пример SignInActivity, так как у меня нет внутреннего сервера.

 Exception com.google.android.gms.common.api.ApiException: 12500: 
 at com.google.android.gms.common.internal.zzb.zzz(Unknown Source)
 at com.google.android.gms.auth.api.signin.GoogleSignIn.getSignedInAccountFromIntent(Unknown Source)
 at com.ewise.android.api.MainActivity.onActivityResult(SignInActivity.java:89)     at android.app.Activity.dispatchActivityResult(Activity.java:7010)
 at android.app.ActivityThread.deliverResults(ActivityThread.java:4187)
 at android.app.ActivityThread.handleSendResult(ActivityThread.java:4234)
 at android.app.ActivityThread.-wrap20(ActivityThread.java)
 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1584)
 at android.os.Handler.dispatchMessage(Handler.java:102)
 at android.os.Looper.loop(Looper.java:154)
 at android.app.ActivityThread.main(ActivityThread.java:6316)
 at java.lang.reflect.Method.invoke(Native Method)
 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:872)
 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:762)

Код

 public class SignInActivity extends AppCompatActivity implements
         View.OnClickListener {

     private static final String TAG = "SignInActivity";
     private static final int RC_SIGN_IN = 9001;

     private GoogleSignInClient mGoogleSignInClient;
     private TextView mStatusTextView;

     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);

         // Views
         mStatusTextView = findViewById(R.id.status);

         // Button listeners
         findViewById(R.id.sign_in_button).setOnClickListener(this);
         findViewById(R.id.sign_out_button).setOnClickListener(this);
         findViewById(R.id.disconnect_button).setOnClickListener(this);

         // [START configure_signin]
         // Configure sign-in to request the user's ID, email address, and basic
         // profile. ID and basic profile are included in DEFAULT_SIGN_IN.
         GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                 .requestEmail()
                 .build();
         // [END configure_signin]

         // [START build_client]
         // Build a GoogleSignInClient with the options specified by gso.
         mGoogleSignInClient = GoogleSignIn.getClient(this, gso);
         // [END build_client]

         // [START customize_button]
         // Set the dimensions of the sign-in button.
         SignInButton signInButton = findViewById(R.id.sign_in_button);
         signInButton.setSize(SignInButton.SIZE_STANDARD);
         signInButton.setColorScheme(SignInButton.COLOR_LIGHT);
         // [END customize_button]
     }

     @Override
     public void onStart() {
         super.onStart();

         // [START on_start_sign_in]
         // Check for existing Google Sign In account, if the user is already signed in
         // the GoogleSignInAccount will be non-null.
         GoogleSignInAccount account = GoogleSignIn.getLastSignedInAccount(this);
         updateUI(account);
         // [END on_start_sign_in]
     }

     // [START onActivityResult]
     @Override
     public void onActivityResult(int requestCode, int resultCode, Intent data) {
         super.onActivityResult(requestCode, resultCode, data);

         // Result returned from launching the Intent from GoogleSignInClient.getSignInIntent(...);
         if (requestCode == RC_SIGN_IN) {
             // The Task returned from this call is always completed, no need to attach
             // a listener.
             Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
             handleSignInResult(task);
         }
     }
     // [END onActivityResult]

     // [START handleSignInResult]
     private void handleSignInResult(Task<GoogleSignInAccount> completedTask) {
         try {
             GoogleSignInAccount account = completedTask.getResult(ApiException.class);

             // Signed in successfully, show authenticated UI.
             updateUI(account);
         } catch (ApiException e) {
             // The ApiException status code indicates the detailed failure reason.
             // Please refer to the GoogleSignInStatusCodes class reference for more information.
             Log.w(TAG, "signInResult:failed code=" + e.getStatusCode());
             e.printStackTrace();
             updateUI(null);
         }
     }
     // [END handleSignInResult]

     // [START signIn]
     private void signIn() {
         Intent signInIntent = mGoogleSignInClient.getSignInIntent();
         startActivityForResult(signInIntent, RC_SIGN_IN);
     }
     // [END signIn]

     // [START signOut]
     private void signOut() {
         mGoogleSignInClient.signOut()
                 .addOnCompleteListener(this, new OnCompleteListener<Void>() {
                     @Override
                     public void onComplete(@NonNull Task<Void> task) {
                         // [START_EXCLUDE]
                         updateUI(null);
                         // [END_EXCLUDE]
                     }
                 });
     }
     // [END signOut]

     // [START revokeAccess]
     private void revokeAccess() {
         mGoogleSignInClient.revokeAccess()
                 .addOnCompleteListener(this, new OnCompleteListener<Void>() {
                     @Override
                     public void onComplete(@NonNull Task<Void> task) {
                         // [START_EXCLUDE]
                         updateUI(null);
                         // [END_EXCLUDE]
                     }
                 });
     }
     // [END revokeAccess]

     private void updateUI(@Nullable GoogleSignInAccount account) {
         if (account != null) {
             mStatusTextView.setText(getString(R.string.signed_in_fmt, account.getDisplayName()));

             findViewById(R.id.sign_in_button).setVisibility(View.GONE);
             findViewById(R.id.sign_out_and_disconnect).setVisibility(View.VISIBLE);
         } else {
             mStatusTextView.setText(R.string.signed_out);

             findViewById(R.id.sign_in_button).setVisibility(View.VISIBLE);
             findViewById(R.id.sign_out_and_disconnect).setVisibility(View.GONE);
         }
     }

     @Override
     public void onClick(View v) {
         switch (v.getId()) {
             case R.id.sign_in_button:
                 signIn();
                 break;
             case R.id.sign_out_button:
                 signOut();
                 break;
             case R.id.disconnect_button:
                 revokeAccess();
                 break;
         }
     }
  }

Из того, что я прочитал, проблема может быть вызвана генерацией SHA1 .

Я выполнил полное руководство, но, видимо, оно не работает.

Я скопировал SHA1 из Gradle SigningReport

Variant: debug
Config: debug
Store: /Users/user/.android/debug.keystore
Alias: AndroidDebugKey
MD5: A3:16:3F:43:75:FE:07:62:6D:8D:CC:DD:21:9F:FA:1A
SHA1: 7B:21:26:7F:D8:18:BB:0E:36:1C:82:DD:B7:28:5F:C1:2F:5C:E4:EA
Valid until: Saturday, August 31, 2047
----------
Variant: release
Config: none
----------
Variant: debugAndroidTest
Config: debug
Store: /Users/user/.android/debug.keystore
Alias: AndroidDebugKey
MD5: A3:16:3F:43:75:FE:07:62:6D:8D:CC:DD:21:9F:FA:1A
SHA1: 7B:21:26:7F:D8:18:BB:0E:36:1C:82:DD:B7:28:5F:C1:2F:5C:E4:EA
Valid until: Saturday, August 31, 2047
----------
Variant: debugUnitTest
Config: debug
Store: /Users/user/.android/debug.keystore
Alias: AndroidDebugKey
MD5: A3:16:3F:43:75:FE:07:62:6D:8D:CC:DD:21:9F:FA:1A
SHA1: 7B:21:26:7F:D8:18:BB:0E:36:1C:82:DD:B7:28:5F:C1:2F:5C:E4:EA
Valid until: Saturday, August 31, 2047

что могло быть причиной этого?

Спасибо

PS Может ли это быть возможной причиной?

Google Play services out of date.  Requires 11720000 but found 10932470

Привет, не могли бы вы опубликовать свой код
Дилип

Привет, @Dilip, я буквально использовал это :) github.com/googlesamples/google-services/tree/master/android/… . Все равно обновил
Аарон

1
Итак, что случилось, вы получаете ту же ошибку или что-то еще. Одна вещь, пожалуйста, сделайте еще раз SHA1 вручную и поместите в консоль разработчика напротив своего приложения, проверьте имя пакета и загрузите файл google-services.json и поместите на уровне приложения.
Дилип

Да @Dilip, у меня такая же ошибка. Я перечеркнул проверенное имя пакета. Я даже пробовал использовать другое хранилище ключей, но результат тот же.
Аарон

Вам необходимо внести изменения в код, чтобы получить свой ключ API. И да, вам следует обновить игровые сервисы
OneCricketeer

Ответы:


38

Просто обновите свои сервисы Google Play до последней версии (или 11720000 в данном случае). Если вы используете AVD, образы Nexus 5 и 5X поддерживают Google Play. После того, как эмулятор будет запущен, перейдите в меню расширенных элементов управления> Google Play, затем обновите.


Как это сделать на устройствах Самсунг?
Pinkesh Darji

7
В моем случае это не проблема. Сервисы Google Play уже обновлены.
Адам Гурвиц

@ zub0r в решение относительно проекта и конфиденциальности связи должны быть приняты в качестве правильного ответа.
Адам Гурвиц

Пожалуйста, где находится расширенное меню управления, в эмуляторе или в Visual Studio?
Джордж Удосен

129

Ошибка PlatformException (sign_in_failed, com.google.android.gms.common.api.ApiException: 12500:, null)

Эту ошибку 12500 можно решить, добавив в проект адрес электронной почты службы поддержки в настройках проекта. Открыть ссылку https://console.firebase.google.com/

Выберите Ваш проект и откройте вкладку настроек.

Укажите действующий адрес электронной почты службы поддержки и перезапустите приложение сейчас.

введите описание изображения здесь


11
Спасибо чувак! Эта ошибка довольно загадочная, она может означать любой из вещей, упомянутых в ответах здесь. Моя проблема была вот в чем :(
Billda

3
Сделал все, что написано в консоли разработчика developers.google.com/identity/sign-in/android/sign-in и потратив день на попытки поставить отпечаток SHA-1, и все это было проблемой. Вы помогли. Большое спасибо!
класс Android

Попробуйте добавить ключ SHA1 для своего проекта @RohitSingh
Maddu Swaroop

1
@MadduSwaroop Если бы только был способ проголосовать дважды ... спасибо, сэр
Lefty

2
Ты спас мне день
Хусем

46

Проверьте, добавлены ли отпечатки SHA-1 в настройки проекта firebase. Если нет, найдите отпечаток SHA-1, используя

https://developers.google.com/android/guides/client-auth

Также найдите SHA-1 отпечаток ключа разблокировки, используя

keytool -list -v -keystore <keystore path>

Убрать <keystore path>с пути хранилища ключей.

Затем добавьте оба отпечатка SHA-1 в настройки проектов firebase.

NB: не забудьте заменить google-services.json обновленным google-services.json с новыми отпечатками пальцев. Я потерял на этом два дня.

Во время отладки

Android studio автоматически генерирует ~/.android/debug.keystore при первой сборке отладки и использует ее для подписи приложения.

Чтобы запустить SHA-1 (пароль android ) ( док ):

keytool -exportcert -list -v -alias androiddebugkey -keystore ~/.android/debug.keystore

Это SHA-1следует добавить в настройки приложения на, firebaseчтобы разрешить использование возможностей входа в Google при тестировании отладочной сборки.


2
Как вы уверены, что он использует Firebase?
PaulG

Угадали (сходство в коде и бессерверное). Проект Firebase также подключен к консоли GCP. Мы также можем изменить отпечатки пальцев в учетных данных GCP.
Нияс Назар

та же ошибка, но в моем случае это не было связано с firebase (я ее не использую).
Majed DH

Перейдите на console.developers.google.com/apis/credentials. Добавьте новые учетные данные (O Auth Client) с ключом SHA. (Firebase автоматически делает это для наших проектов Firebase)
Нияс Назар

Файл google-services.json можно найти в каталоге приложения внутри вашего проекта. (Пройдите через Finder / File Explorer)
Мехул Тандейл

44

 для ошибки 12500 вам нужно добавить поддержку gmail только в настройках firebase, а для ошибки 10 добавить отпечаток ssh в консоли firebase, как вы видите на картинке


хороший и прямой ответ, просто настроил мою учетную запись gmail и бац, он сделает все остальное
Ajeett

«для ошибки 12500 вам нужно добавить поддержку gmail только в настройках firebase, а для ошибки 10 добавить отпечаток ssh в консоли firebase, как вы видите на картинке» Это действительно помогло. Я получал 12500, применил отпечаток SHA1, но он все еще не работал. Добавление ЭЛЕКТРОННОЙ ПОЧТЫ ПОДДЕРЖКИ помогло. Спасибо!
класс Android

44

Электронная почта поддержки, а также все ссылки на проекты и конфиденциальность необходимы для работы Google SignIn, в противном случае выдается 12500.

Установите его на https://console.developers.google.com/apis/credentials внизу второй вкладки с названием «Экран согласия OAuth» - там вы найдете три ссылки, которые необходимо настроить.

Это нигде не упоминается в руководствах Firebase.


3
Спасибо, у меня работает Я потратил почти целые дни на решение проблемы
Кришан Кумар Шарма

2
Спасибо, я просто добавил один из «авторизованных доменов» к ссылкам на конфиденциальность, и все заработало. Вы сэкономили мне несколько часов проб и ошибок 💌
Коко

Это должен быть принятый ответ. Я боролся с этими 2 днями, но безуспешно. Google должен обновить руководства, поскольку теперь их документация вводит в заблуждение, их руководство никогда не будет работать, а код ошибки ничего не говорит
user1209216

1
куда добавить ссылки конфиденциальности?
Shihab

4
На второй вкладке с названием «Экран согласия OAuth» - внизу формы у вас есть три ссылки
zub0r

21

Попробуйте обновить экран согласия OAuth на https://console.developers.google.com/apis/credentials.


3
Мне пришлось добавить электронную почту поддержки, и тогда она начала работать. Это было в трепете.
адарш

Также необходимы все ссылки на проект и приватность, иначе выдает 12500. Об этом нигде не упоминается.
zub0r

Ссылки @ zub0r не нужны. Источник: Я просто обошелся без них.
easycheese

18

На какое-то время я застрял в этом.

Убедитесь, что этот шаг выполнен -

  • Правильный ключ SHA сохраняется в консоли Firebase.
  • Загрузите последнюю версию google-service.json
  • И последнее и самое важное: Сохранить согласие OAuth под учетными данными в API Google, Экран OAuth. На это потребовалось много времени. И после этого все заработало.

6
хорошо. это должен быть принятый ответ на 2019 год здесь. Google, как ни странно, «должен» обновлять контент внутри OAuth Consent
mochadwi

1
Тьфу, еще один голос за это. Это была моя непонятная проблема.
easycheese

12

Кажется, ваш SHA1 перезаписан магазином Google Play. Проверьте свой магазин Google Play, панель запуска, в разделе подписи приложений, посмотрите, добавлен ли в Google Play дополнительный SHA1.

И скопируйте этот SHA1, добавьте в нужное место, и все будет.


1
о Боже! Спасибо за этот совет! Наборы приложений создали собственный SHA1, поэтому ключи выпуска, которые используются локально (при создании APK), больше не подходят.
Цзя Цзе

Это самый запутанный рабочий процесс. Но спасибо за подсказку
DarkNeuron

5

Если еще есть кто-то с подобной проблемой, если вы добавляете настраиваемые области, убедитесь, что это допустимая область. В моем случае я смешал области видимости Facebook с областями действия Google, и мне потребовалось время, чтобы понять это!


5

Я использую аутентификацию Firebase. Мой SHA-1 был указан правильно, идентификатор клиента также был правильным, но я все равно получал 12500.

Оказалось, что моя проблема заключалась в том, что я не указал адрес электронной почты службы поддержки в настройках своего проекта. (Настройки -> вкладка Общие -> раздел Ваш проект (Публичные настройки)).


3
То же самое произошло и со мной. Существуют серьезные проблемы с документацией служб Google. Я бы хотел, чтобы они задокументировали такие проблемы или, по крайней мере, показали удобную для пользователя ошибку.
ashish-goel

4

Я думаю, что ошибка возникла из-за неправильного SHA1. Пожалуйста, не забывайте, что SHA1 различается между режимами выпуска и отладки в студии Android. Вместо использования keytool для получения SHA1 вы можете использовать Gradle project -> Task -> android -> signedReport в студии android (можно открыть его в меню View -> Toolwindow -> gradle), чтобы получить релиз и отладить SHA1. После этого для упрощения работы вам необходимо создать 2 отдельных учетных данных с двумя SHA1 в облачной консоли Google (Google просто проинструктирует создать 1 с использованием релиза SHA1, при разработке он не будет работать, поскольку он использует отладочный SHA1).


4

Перейдите в свой проект в консоли Firebase, откройте настройки проекта и добавьте туда свои отпечатки сертификата SHA. Загрузите обновленный файл google-services.json и добавьте его в папку приложения Projects.

Это сработало для меня.

Скриншот консоли Firebase


4

Сначала убедитесь, что вы зарегистрировали свое приложение в консоли разработчиков Google.

Убедитесь, что в приложении Firebase есть ключи debugи release. Если эта ошибка появляется в производстве, добавьте свое SHA-1 release keyбазовое приложение для запуска. Если он появится в разработке, добавьте свой SHA-1 debug key.

Куда добавить отпечаток пальца SHA-1

Получение ключа отладки / выпуска:

keytool -exportcert -list -v -alias [your alias] -keystore [path/to/debug or release.keystore]

Обязательно загрузите обновление google-services.jsonв свое приложение.


У меня не получалось, когда GoogleSignInResult.getSuccess () возвращал false и код 12500. В конечном итоге это произошло из-за того, что кто-то другой установил мой OAuth со своим SHA1 вместо моего ключа отладки. Это исправило это.
Reckless

@Reckless Я рад, что это помогло!
Denn

2

Для меня проблема заключалась в использовании «Release» ClientID с моим настроенным для отладки приложением. Убедитесь, что у вас есть ключи выпуска и отладки, используя каждый SHA-1 соответственно.


2

Если вы пришли сюда из-за флаттера : это один из крайних случаев, который мы должны исправить в соответствии с документацией здесь: https://pub.dev/packages/google_sign_in введите описание изображения здесь

  • Перейти к API и сервисам Google
  • Выберите приложение, в котором вы хотите реализовать вход в Google.
  • Затем нажмите Включить APIS и службы.

введите описание изображения здесь

  • Затем найдите API Google Peoples

введите описание изображения здесь

  • Откройте карточку API Google People и нажмите "Включить", ваше приложение может избавиться от проблемы.

2

Когда ваше приложение аутентифицируется на внутреннем сервере или получает доступ к API Google с вашего внутреннего сервера, вы должны передать идентификатор клиента OAuth 2.0, который был создан для вашего сервера, в метод requestIdToken при создании объекта GoogleSignInOptions для доступа к базовой информации профиля пользователя. . Кроме того, не забудьте отправить электронное письмо службы поддержки на экране согласия OAuth на странице учетных данных в консоли API.


2

В моем случае эта ошибка возникла из-за того, что аутентификация Android была удалена старшей командой, поскольку, похоже, нет необходимости в ключах Android для аутентификации на бэкэнд. Таким образом, для входа в Google необходимы ключи как Android, так и веб-клиента.


1
Спасибо за это! Я также удалил свой идентификатор клиента Android, потому что думал, что он не нужен, поскольку нам нужен только идентификатор веб-клиента.
зеинозавр

1

Также может случиться, что компилятор Cordova не может найти нужный файл хранилища ключей.



Решение: Перед выполнением ionic cordova build androidукажите свойства подписи

Шаг 1 Создайте файл хранилища ключей отладки

Выполнить команду

keytool -exportcert -list -v -alias androiddebugkey -keystore ~/.android/debug.keystore

Используйте пароль: android

Шаг 2. Скопируйте файл хранилища ключей ( debug.keystore) из ~/.androidвplatform/android директории текущего проекта

Шаг 3. Создайте файл с именем release-signing.properties вplatform/android каталоге

Шаг 4: Добавьте содержимое в файл

storeFile=debug.keystore
keyAlias=androiddebugkey
storePassword=android
keyPassword=android

Примечание. Это значения по умолчанию. Если вы указали собственный псевдоним и пароль, используйте их соответственно.

Шаг 5: Теперь соберитеionic cordova build android


1

У меня возникла такая же проблема после открытия моего проекта на другом компьютере (другой Android Studio). В моем случае я решил это с помощью Firebase Assistant, который изначально использовал для настройки Firebase. Открыл Firebase Assistant (Инструменты> Firebase) и выбрал Аутентификацию> Подключиться. Это повторно подключило проект к Firebase и обновило конфигурации.


1

Я застрял в проблеме входа в Google с 2 недель, наконец, хорошо разобрался. Позвольте мне объяснить причину. Проблема была связана с firebase. В firebase они упомянули поле «электронная почта поддержки» как необязательное. Но как только я добавил его (любой из ваших личных писем), проблема решена, и я получил ответ. Если вы получаете сообщение об ошибке как 12501, то это связано с настройками вашей учетной записи Google.


1

На какое-то время я застрял в этом.

Убедитесь, что этот шаг выполнен -

Correct SHA key is saved on Firebase Console.
Valid reversed client id.
from fcm console=>select app=>from authentication=>enable google sign-in method

0

В моем случае это из-за неправильного идентификатора клиента Google. Я меняю свой ключ на ключ, указанный в google-services.json(под oauth_clientобъектом)


0

Убедитесь, что вы правильно настроили следующее:

  1. Сгенерируйте идентификатор клиента в своем проекте Google.
  2. Предоставьте правильный ключ SHA-1 для этого идентификатора клиента. (отладка / выпуск)
  3. Укажите правильное имя пакета для этого идентификатора клиента.
  4. Убедитесь , что вы сгенерировали идентификатор клиента в strings.xml, google-services.jsonили credentials.jsonфайл.

0

https://developers.google.com/identity/sign-in/android/sign-in следуйте этой документации по API, но имейте в виду, что внутри WEB_CLIENT_ID используйте значение идентификатора клиента, которое создается внутри файла google-services.json.

class MainActivity : AppCompatActivity(), GoogleApiClient.OnConnectionFailedListener {
private val TAG = "JSAGoogleSignIn"
private val REQUEST_CODE_SIGN_IN = 1234
private val WEB_CLIENT_ID = "354298333018-XXXXXXXXXXXXXXXXXXXXXXX.apps.googleusercontent.com"
private var mAuth: FirebaseAuth? = null

private var mGoogleApiClient: GoogleApiClient? = null
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    var txt_register = findViewById<TextView>(R.id.txt_register)
    txt_register.setOnClickListener {
        var intent = Intent(this@MainActivity, RegisterActivity::class.java)
        finish()
        startActivity(intent)
    }
    val gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestIdToken(WEB_CLIENT_ID)
            .requestEmail()
            .build()
    mGoogleApiClient = GoogleApiClient.Builder(this)
            .enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */)
            .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
            .build()

    mAuth = FirebaseAuth.getInstance()
    sign_in_button.setOnClickListener {
        val intent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient)
        startActivityForResult(intent, REQUEST_CODE_SIGN_IN)
    }

}


override fun onConnectionFailed(p0: ConnectionResult) {
    TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}


private fun updateUI(user: FirebaseUser?) {
    if (user != null) {
        Log.e("Email", "Value" + user.email)
    }

}

fun signIn() {

}

override fun onStart() {
    super.onStart()
    val currentUser = mAuth!!.currentUser
    updateUI(currentUser)
}

public override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)

    // Result returned from launching the Intent from GoogleSignInClient.getSignInIntent(...);
    if (requestCode == REQUEST_CODE_SIGN_IN) {
        val result = Auth.GoogleSignInApi.getSignInResultFromIntent(data)
        if (result.isSuccess) {
            // successful -> authenticate with Firebase
            val account = result.signInAccount
            firebaseAuthWithGoogle(account!!)
        } else {
            // failed -> update UI
            updateUI(null)
            Toast.makeText(applicationContext, "SignIn: failed!" + result.status,
                    Toast.LENGTH_SHORT).show()
        }
    }
}

private fun firebaseAuthWithGoogle(acct: GoogleSignInAccount) {
    Log.e(TAG, "firebaseAuthWithGoogle():" + acct.id!!)

    val credential = GoogleAuthProvider.getCredential(acct.idToken, null)
    mAuth!!.signInWithCredential(credential)
            .addOnCompleteListener(this) { task ->
                if (task.isSuccessful) {
                    // Sign in success
                    Log.e(TAG, "signInWithCredential: Success!")
                    val user = mAuth!!.currentUser
                    updateUI(user)
                } else {
                    // Sign in fails
                    Log.w(TAG, "signInWithCredential: Failed!", task.exception)
                    Toast.makeText(applicationContext, "Authentication failed!",
                            Toast.LENGTH_SHORT).show()
                    updateUI(null)
                }
            }
}

0

В моем случае, после добавления отпечатка пальца в консоль Firebase, он автоматически принимался консолью разработчика Google и отображал отпечатки пальцев. Но войти не получилось. Посмотрев на каждый шаг, я понял, что Google отменил мой пакет файла манифеста вот так com.xxxxxxxx.app. Но на самом деле это app.xxxxxxxx.comв консоли разработчика Google. Поэтому я удалил автоматически созданный отпечаток пальца и добавил отпечаток пальца с правильным именем пакета. БУМ !!. Это сработало.



0

Убедитесь, что ваш проект не должен содержать никаких специальных символов, включая числовые или любые другие символы (название проекта должно быть простым, как com.google.testproject)


Это назовите название пакета проекта, а не название проекта
b devloper

0

В моем случае я работал над непроизводственным приложением, проблема заключалась в том, что при создании проекта в консоли firebase возникали проблемы с синхронизацией ключей SHA-1 между консолями разработчиков Firebase и Google. Итак, я решил сначала создать проект в консоли Google Developer, а затем выбрать его при создании нового проекта в консоли Firebase.

Я также сделал для этого учебник , который может вам помочь.


0

В моем случае проблема заключалась в том, что в моем эмуляторе не было Play Store. Я создал эмулятор (названный API 23) через Visual Studio, потому что я также разрабатываю с использованием Xamarin.Forms, а в диспетчере устройств Android Visual Studio вы можете выбрать, должен ли ваш эмулятор иметь Google Play Store.

Пришлось создать эмулятор через AVD Android Studio и убедиться, что в нем есть Play Store:

введите описание изображения здесь


-1

Попробуйте такие варианты:

keytool -list -v -keystore C:\Users\MG\Desktop\test.jks -alias test

Он запрашивает пароль и просто введите пароль. Вы можете увидеть отпечатки SHA1, MD5.

введите описание изображения здесь

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.