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

I am trying to integrate Google Sign In into my android app, but I got an error. When it ran an older version of Google Play services (for example 9.8.79) there was no problem, it worked perfectly. Then when it ran the latest version of Google Play services the problem appeared, the error code is

Status{statusCode=unknown status code: 12500, resolution=null

and I noticed the logcat message is :

 12-21 16:47:57.128 909-1861/? W/ActivityManager: Unable to start service Intent { act=com.google.android.gms.signin.service.START pkg=com.google.android.gms } U=0: not found
12-21 16:47:57.129 909-2225/? W/ActivityManager: Unbind failed: could not find connection for android.os.BinderProxy@daa436e
12-21 16:47:57.129 10959-11128/? E/GmsClient: unable to connect to service: com.google.android.gms.signin.service.START on com.google.android.gms
12-21 16:47:57.133 909-1300/? I/ActivityManager: retrieveServiceLocked, callerApp: ProcessRecord{9210179 10959:com.google.android.gms.ui/u0a8}, flags: 400
12-21 16:47:57.134 909-1300/? W/ActivityManager: Unable to start service Intent { act=com.google.android.gms.signin.service.START pkg=com.google.android.gms } U=0: not found
12-21 16:47:57.134 909-1863/? W/ActivityManager: Unbind failed: could not find connection for android.os.BinderProxy@71e6a0f
12-21 16:47:57.135 10959-11128/? E/GmsClient: unable to connect to service: com.google.android.gms.signin.service.START on com.google.android.gms

What could be the possible cause of this?

Thanks

the code is:

private void googleSignIn() {
    if(mGoogleApiClient == null){
        GoogleSignInOptions gso = new GoogleSignInOptions
                .Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestEmail()
                .requestId()
                .requestIdToken(getResources().getString(R.string.server_client_id))
                .build();
        mGoogleApiClient = new GoogleApiClient
                .Builder(this)
                .enableAutoManage(this,this)
                .addConnectionCallbacks(this)
                .addOnConnectionFailedListener(this)
                .enableAutoManage(this, this)/* FragmentActivity *//* OnConnectionFailedListener */
                .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
                .build();
    }
    if(mGoogleApiClient!=null){
        mGoogleApiClient.connect();
    }
    Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
    startActivityForResult(signInIntent, RC_SIGN_IN);
}

app gradle:

    buildscript {
    repositories {
        maven { url 'https://maven.fabric.io/public' }
    }

    dependencies {
        // The Fabric Gradle plugin uses an open ended version to react
        // quickly to Android tooling updates
        classpath 'io.fabric.tools:gradle:1.+'
    }
}
apply plugin: 'com.android.application'

apply plugin: 'io.fabric'

repositories {
    maven { url 'https://maven.fabric.io/public' }
}

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.0"
    defaultConfig {
        applicationId "com.qraved.imaginato.loginterminator"
        minSdkVersion 15
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:24.1.1'
    testCompile 'junit:junit:4.12'
    compile 'com.google.android.gms:play-services-auth:9.6.1'
    compile('com.twitter.sdk.android:twitter:2.1.1@aar') {
        transitive = true;
    }
    compile 'com.facebook.android:facebook-android-sdk:4.28.0'
}

project gradle:

    // Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.2'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

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

I am trying to integrate Google Sign In into my app. I don’t have a back-end server, I am just getting the details of the logged on Google Account to my app.

I first tried it by using Google Sign In Example but I got an error (No code changes made except for printing the stacktrace below). I just used the example SignInActivity as I don’t have a back-end server.

 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)

Code

 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;
         }
     }
  }

From what I read, the issue could be caused by SHA1 Generation.

I followed the complete guide but apparently it’s not working.

I copied the SHA1 from 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

what could be the possible cause of this?

Thanks

P.S. Could this be a possible cause?

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

I am trying to integrate Google Sign In into my app. I don’t have a back-end server, I am just getting the details of the logged on Google Account to my app.

I first tried it by using Google Sign In Example but I got an error (No code changes made except for printing the stacktrace below). I just used the example SignInActivity as I don’t have a back-end server.

 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)

Code

 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;
         }
     }
  }

From what I read, the issue could be caused by SHA1 Generation.

I followed the complete guide but apparently it’s not working.

I copied the SHA1 from 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

what could be the possible cause of this?

Thanks

P.S. Could this be a possible cause?

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

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

█ 21.09.2007 11:06

Вроде простая ошибка. Но. Оракл 8. Через менеджер база коннектится, монтируется, открывается, в алерт логе ошибок нет. Больше ни из чего приконнектится не могу — ни плюсом, ни DBA.
ORA-12500:TNS:listener failed to start a dedicated server process
Сервер магазинный, вчера с утра на нем все работало. Подняла бэкап — такая же история. Переустановила оракловый сервер (правда сверху) — не помогает. Может есть у кого мысли?

█ 21.09.2007 11:22

ORACLE_HOMEnetworkloglistener.log смотри

█ 21.09.2007 11:40

21-СЕН-2007 10:53:13 * service_died * YABL65 * 12537
21-СЕН-2007 10:53:28 * service_register * YABL65 * 0
21-СЕН-2007 10:53:54 * (CONNECT_DATA=(SERVICE_NAME=YABL65)(CID=(PROGRAM=D:ORACLEORA81binSQLPLUSW.EXE)(HOST=SERVER65)(USER=operator))) * (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.0.63)(PORT=1138)) * establish * YABL65 * 12500
TNS-12500: TNS:сбой прослушивателя при запуске выделенного серверного процесса
TNS-12560: TNS:ошибка адаптера протокола
TNS-00530: Ошибка адаптера протокола

█ 21.09.2007 11:57

Пробуем курить здесь для начала

█ 21.09.2007 12:01

Да курю уж с утра. У всех или новые бызы не встают или после открытия кучи сессий не подключаются. Что — то своего случая не найду. У меня то вчера все работало и вдруг алтын. Подняла сейчас базу на другом компе — нормально поднялась. Видимо формат рулит.

█ 21.09.2007 12:08

Цитата:

inna ➤ Да курю уж с утра. У всех или новые бызы не встают или после открытия кучи сессий не подключаются. Что — то своего случая не найду. У меня то вчера все работало и вдруг алтын. Подняла сейчас базу на другом компе — нормально поднялась. Видимо формат рулит.

до следующего «Сервер магазинный, вчера с утра на нем все работало.»
лучше все таки найти и устранить причниу а не следствие.

█ 21.09.2007 12:10

чаще всего такая фигня вылезает, когда не хватает памяти для серверного процесса.
случается при неаккуратном распределении памяти, так что общая память оракла перестает умещаться в 1.7G (без ключа /3G) или подходит слишком близко к этому пределу.
запросто может быть при ситуации, когда обычно базу открывали одним способом (автозапуском по старту сервиса, к примеру), а в какой-то момент открыли другим (через студию, например же) и использовался другой файл параметров.

█ 21.09.2007 12:16

по ссылке от reddevil самое первое из полезного:

1. На машине, где работает лисенер:
lsnrctl trace ADMIN

2. Выполнить попытку подключения, которая не удается

3. На машине, где работает лисенер:
lsnrctl trace OFF

4. Изучить лог лисенера

█ 21.09.2007 12:25

Цитата:

reddevil ➤ до следующего «Сервер магазинный, вчера с утра на нем все работало.»
лучше все таки найти и устранить причниу а не следствие.

Причиной может быть постоянное короткое замыкание в сети магазина из за которых выключаються бесперебойники и вчера все начилось с того, что сервер супермага как служба не хотел работать. Может?

█ 21.09.2007 12:45

Цитата:

Andrew_Konev ➤ чаще всего такая фигня вылезает, когда не хватает памяти для серверного процесса.
случается при неаккуратном распределении памяти, так что общая память оракла перестает умещаться в 1.7G (без ключа /3G) или подходит слишком близко к этому пределу.
запросто может быть при ситуации, когда обычно базу открывали одним способом (автозапуском по старту сервиса, к примеру), а в какой-то момент открыли другим (через студию, например же) и использовался другой файл параметров.

На сервере 1ГБ памяти, другого файла параметров на нем нет. Никто там не копался 110% (приходится доверять человеческому фактору). Если кому не жалко — взгляните на лог — с своему стыду криминала не вижу.

Часовой пояс GMT +3, время: 16:46.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.

На самом деле, у меня недавно возникла та же проблема, и я узнал, что версия сервиса Google Play не обновляется. По этому вопросу в стеке переполнения qaru.site/questions/1273839/…

Так что я должен был сделать это в 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 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 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

Здравствуйте, хотел сделать регистрацию в приложении. Сделал MainActivity с LayoutDrawerActyvity. А также AuthActivity, где происходит процесс авторизации. В MainActivity в методе onCreate прописал старт AuthActivity. И теперь после авторизации всегда кидает на AuthActivity. подскажите, пожалуйста, как это можно исправить? Делал все по документации от Google. Ошибка, которая в логах: signInResult:failed code=12500


  • Вопрос задан

    более двух лет назад

  • 110 просмотров

Понравилась статья? Поделить с друзьями:
  • Что значит ошибка 125
  • Что значит ошибка 124
  • Что значит ошибка 123
  • Что значит ошибка 122
  • Что значит ошибка 12007