Что значит ошибка 12500

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

Я пытаюсь интегрировать 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 signatureReport

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

Что может быть возможной причиной этого?

Благодарность

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

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

28 ответов

Лучший ответ

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


38

Strauss
6 Дек 2017 в 05:40

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


40

Vijay
24 Май 2019 в 05:46

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


1

allo
19 Дек 2018 в 15:55

Может также случиться, что компилятор 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

Debojyoti
10 Ноя 2018 в 14:40

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

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

Firebase console Screenshot


4

ochs.tobi
20 Дек 2018 в 08:12

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

И скопируйте, что SHA1, добавьте к вашему соответствующему месту, сделает работу.


11

Paul Zhang Ising
5 Ноя 2018 в 02:25

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


3

Bioz Nguyen
27 Ноя 2018 в 15:48

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


0

Naroju
25 Янв 2019 в 12:10

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

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

enter image description here


0

Reed
12 Янв 2020 в 11:05

Я застрял на некоторое время.

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

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


1

Sumit Kumawat
8 Янв 2020 в 11:10

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


1

Kevin
3 Июл 2019 в 06:11

Проверьте, добавлены ли отпечатки 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 автоматически генерирует ~/.android/debug.keystore при первом отладить сборку и использовать ее для подписи приложения.

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

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

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


43

michaelbn
22 Янв 2019 в 10:19

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

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

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

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

enter image description here


97

Maddu Swaroop
25 Фев 2020 в 05:25

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


5

Paulo Taylor
11 Апр 2018 в 10:53

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

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


5

algrid
24 Май 2019 в 16:00

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

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

Where to add SHA-1 finger print

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

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

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


3

Denn
7 Янв 2019 в 09:00

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


2

peresisUser
10 Окт 2018 в 07:12

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


2

Sridhar Shanmugam
5 Янв 2020 в 15:36

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

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


0

Chintan Shah
14 Дек 2018 в 08:04

https://developers.google.com/identity/sign-in/ Android / вход следуйте этой документации 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

Vajani Kishan
23 Янв 2019 в 07:47

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

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


0

Zain
14 Авг 2019 в 04:32

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


0

Himani Tank
22 Апр 2020 в 06:00

Попробуйте следующие варианты:

keytool -list -v -keystore C:UsersMGDesktoptest.jks -alias test

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

enter image description here


-1

Zoe
5 Ноя 2018 в 16:49

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


0

Sekhon123
6 Авг 2019 в 05:44

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

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


0

Yonibagi
14 Май 2019 в 09:24

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


0

thuanle
25 Ноя 2018 в 10:55

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

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

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


40

zub0r
27 Дек 2019 в 11:04

Я пытаюсь интегрировать 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 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 Generation.

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

Я скопировал SHA1 из gradle signedReport

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

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

Спасибо

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

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

Step 1: Are you in the right place?

Yes

Step 2: Describe your environment

  • Android Studio version: 3.4.2
  • Firebase Component: Authentication
  • Component version:
    implementation 'com.google.firebase:firebase-auth:18.0.0'
    implementation 'com.google.android.gms:play-services-auth:17.0.0'

Step 3: Describe the problem

I used this code as it is without any change.

I created a new Firebase project, then I performed all the important steps:

  • Used Latest Google Play support libraries and Firebase libraries
  • Added DEBUG SHA-1 Key in console
  • Enabled Google Sign-In Method
  • Added support email for authentication.
  • Checked that my device is having the latest Google Play Services installed.

After performing this, downloaded latest google-services.json and imported in the project. Though it is showing me error 12500.

Then, I again checked the Google Cloud API Console OAuth2.0 page and checked my URL and it’s correct.

After this, I created 3 different projects, with different accounts and performed the same things again and again. Though I didn’t get success. Please Help me in that issue.
I tried all other authentications like PhoneAuth, EmailAuth, etc. But an error occurs in Google Sign-In only.

Steps to reproduce:

While signing in with Google, It fails and then here is a log.

2019-07-26 07:54:38.432 31194-31194/com.example.firebaserecyclerpagination W/GoogleActivity: Google sign in failed
    com.google.android.gms.common.api.ApiException: 12500: 
        at com.google.android.gms.common.internal.ApiExceptionUtil.fromStatus(Unknown Source)
        at com.google.android.gms.auth.api.signin.GoogleSignIn.getSignedInAccountFromIntent(Unknown Source)
        at com.google.firebase.quickstart.auth.kotlin.GoogleSignInActivity.onActivityResult(GoogleSignInActivity.kt:76)
        at android.app.Activity.dispatchActivityResult(Activity.java:7109)
        at android.app.ActivityThread.deliverResults(ActivityThread.java:4192)
        at android.app.ActivityThread.handleSendResult(ActivityThread.java:4239)
        at android.app.ActivityThread.-wrap20(ActivityThread.java)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1599)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:165)
        at android.app.ActivityThread.main(ActivityThread.java:6375)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:912)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:802)

Relevant Code:

I used this code as it is without any change.

На самом деле, у меня недавно была такая же проблема, позже я узнал, что версия сервиса Google Play не обновляется. По этому вопросу в переполнении стека https://stackoverflow.com/a/47645136/7352857

Поэтому мне пришлось сделать это в onActivityResult,

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == GOOGLE_SIGNIN_ID){
        Task<GoogleSignInAccount> googleSignInAccountTask = GoogleSignIn.getSignedInAccountFromIntent(data);
        try {

            GoogleSignInAccount googleSignInAccount = googleSignInAccountTask.getResult(ApiException.class);
            fireBaseAuthenticationWithGoogle(googleSignInAccount);

        }catch (ApiException e){

            //if user doesn't have updated google play services version

            if (e.getStatusCode() == 12500){

                try{
                    // show your own AlertDialog for example:
                    AlertDialog.Builder builder = new AlertDialog.Builder(this);
                    // set the message
                    builder.setMessage("This app uses google play services for 
  signing in")
                            .setTitle("Do you want to update?");

                    builder.setPositiveButton("Ok", (dialog, id) -> {

                        //final String appPackageName = "com.google.android.gms";
                        final String appPackageName = 
                    "com.google.android.gms&hl=en_IN";
                        try {
                            startActivity(new Intent(Intent.ACTION_VIEW, 
               Uri.parse("market://details?id = " + appPackageName)));
                        }catch (android.content.ActivityNotFoundException anfe) {
                            startActivity(new Intent(Intent.ACTION_VIEW, 
                Uri.parse("https://play.google.com/store/apps/details?id = " + 
             appPackageName)));
                        }
                    });
                    builder.setNegativeButton("Cancel", new 
                    DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {
                            // User cancelled the dialog
                        }
                    });
                    AlertDialog dialog = builder.create();
                    dialog.show();
                }catch (Exception err){
                    err.printStackTrace();
                }

            }
        }
    }else {
        // Pass the activity result back to the Facebook SDK
        mCallbackManager.onActivityResult(requestCode, resultCode, data);
    }

Попробуйте это и дайте мне знать, если у вас есть запрос. Я решил эту ошибку этим методом.

Вопрос:

С новым значком google 8.3.0 вход работает до запроса “.requestServerAuthCode(” идентификатор клиента из веб-приложения под идентификаторами клиента Oauth 2.0 “).

Выглядит что-то вроде “10381xxxxx183-u8g0o9lig1qli29jxyytrrrewe5lhckfp.apps.googleusercontent.com”

Если я попрошу этот код аутентификации сервера, я получаю статус onActivityResult 12500. Без него логин работает, и вы получаете успех.

Ответ №1

Я также боролся с той же проблемой. Если я добавил метод requestServerAuthCode, я не смог войти.

Убедитесь, что в методе requestServerAuthCode

вы указали действительный идентификатор веб-клиента (не Android)

Проблема заключалась в конфигурации SHA. Я создал хранилище ключей и использовал его для создания SHA и предоставил его при создании google-services.json. Но во время отладки приложение использовало хранилище отладки.

Все работало нормально после того, как я сконфигурировал версию debug для использования одного и того же хранилища ключей. Где находится debug.keystore в Android Studio

Надеюсь, это поможет.:)

Ответ №2

Это на самом деле происходит, если вы запрашиваете разрешения, которые не добавлены на экране согласия OAuth.

https://developers.google.com/identity/protocols/googlescopes?hl=en_US#drivev3

  1. Убедитесь, что вы проверили необходимые области, указанные в ссылке выше, добавили только их и сохранили после добавления.
  2. Запросите разрешение для добавленных областей, только для добавленных областей, а не для каких-либо других критических разрешений, которые не были зарегистрированы для вашего приложения.
  3. Вы можете запросить конфиденциальные разрешения области действия в зависимости от потребностей ваших приложений, но обязательно добавьте необходимые области после проверки. (Если вы добавите конфиденциальную область действия, например области, которые предоставляют вам полный доступ к Gmail или Диску, Google проверит ваш экран согласия перед этим. опубликован.)

Ответ №3

Эта проблема появляется, когда apk не подписан. Вы должны сгенерировать архив build.json с данными хранилища ключей и сгенерировать apk-релиз, ionic cordova build android –release. Если ionic создает app-release-unsigned.apk, он не будет работать, но если ionic создает app-release.apk, это означает, что он будет работать.

Понравилась статья? Поделить с друзьями:
  • Что значит ошибка 122
  • Что значит ошибка 113
  • Что значит ошибка 107 на телевизоре самсунг
  • Что значит ошибка 106 при подключении к интернету
  • Что значит ошибка 1020 на сайте