Ошибка входа в Google. Com.google.android.gms.common.api.ApiException: 10:

Итак, я застрял в этой неприятной проблеме. Я совершенно новичок в Google Auth on Firebase, но я сделал все, что дал разработчикам firebase в том, как интегрировать Authentication Sign In, но я все еще получаю эту странную ошибку в консоли, состоящей из двух частей:

12-03 11:07:40.090 2574-3478/com.google.android.gms E/TokenRequestor: You have wrong OAuth2 related configurations, please check. Detailed error: UNREGISTERED_ON_API_CONSOLE

а также

Google sign in failed com.google.android.gms.common.api.ApiException: 10:

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

  • У меня есть свой отпечаток SHA1 для моего проекта.
  • У меня есть идентификатор клиента OAuth 2.0, как идентификатор клиента Android, так и веб-клиент, и в requestIdToken() я разместил идентификатор веб-клиента.
  • Я сделал не публиковать свой проект APK в Google Play Store. что означает, что я случайно не создал еще один отпечаток SHA1.
  • Я шаг за шагом следил за документами Firebase для входа в систему Google.

вот мой фрагмент кода:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_signup);
    ButterKnife.bind(this);

    String webClientId = getString(R.string.web_client_id);


    GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestEmail()
            .requestIdToken(webClientId)
            .build();

    mGoogleApiClient = new GoogleApiClient.Builder(this)
            .enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */)
            .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
            .build();

    mGoogleSignInClient = GoogleSignIn.getClient(this, gso);


    GoogleSignInAccount account = GoogleSignIn.getLastSignedInAccount(this);


    googleLoginBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent signInIntent = mGoogleSignInClient.getSignInIntent();
            startActivityForResult(signInIntent, RC_SIGN_IN);
        }
    });

}



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

    // Result returned from launching the Intent from 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);

        try{

            GoogleSignInAccount account = task.getResult(ApiException.class);
            firebaseAuthWithGoogle(account);

        } catch (ApiException e) {
            // Google Sign In failed, update UI appropriately
            Log.w(TAG, "Google sign in failed", e);
            // [START_EXCLUDE]
            Toast.makeText(this, "Gooogle Auth failed", Toast.LENGTH_LONG);
            // [END_EXCLUDE]
        }

    }
}



private void firebaseAuthWithGoogle(GoogleSignInAccount acct) {
    Log.d(TAG, "firebaseAuthWithGoogle:" + acct.getId());
    // [START_EXCLUDE silent]
    //showProgressDialog();
    // [END_EXCLUDE]

    AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null);
    mAuth.signInWithCredential(credential)
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    if (task.isSuccessful()) {
                        // Sign in success, update UI with the signed-in user information
                        Log.d(TAG, "signInWithCredential:success");
                        FirebaseUser user = mAuth.getCurrentUser();
                        Toast.makeText(LoginActivity.this, "Successful Auth", Toast.LENGTH_LONG).show();
                    } else {
                        // If sign in fails, display a message to the user.
                        Log.w(TAG, "signInWithCredential:failure", task.getException());
                        Toast.makeText(LoginActivity.this, "Authentication failed.",
                                Toast.LENGTH_SHORT).show();
                        //updateUI(null);
                    }

                    // [START_EXCLUDE]
                    //hideProgressDialog();
                    // [END_EXCLUDE]
                }
            });
}

Ответ 1

В основном проблема заключается в том, что клавиша SHA1 добавлена ​​на консоль, пожалуйста, восстановите ее и снова установите правильно тот же проект.

1) В качестве ответов убедитесь, что ваш фактический подписанный Android apk имеет тот же отпечаток SHA1, что и вы указали в консоли раздела интеграции Android проекта Firebase (страница, на которой вы можете скачать google-services.json)

2) Кроме того, перейдите на вкладку "Настройки вашего проекта firebase" (значок шестеренки справа на "Обзор" в верхней левой области, а затем перейдите на вкладку "Учетная запись учетной записи". На этой вкладке ссылка Google Play на ваш проект.

Ответ 2

Я столкнулся с той же проблемой: после проверки решения, от восстановления отпечатка пальца до связывания приложения на firebase с консолью Google play и публикации подписанного apk, проблема была на самом деле, потому что я использовал релиз SHA-1 на консоль пожарной базы.

  • Если вы все еще находитесь в режиме дебюта, используйте SHA1 debug.keystore
  • Используйте релиз SHA1 только в режиме производства

https://developer.android.com/studio/publish/app-signing.html

Ответ 3

При использовании подписи приложений в Google Play и Firebase необходимо добавить отпечаток SHA-1 сертификата подписи приложения (находится в консоли Play Play/Управление выпусками/сертификат подписи приложения) к консоли Firebase/Настройки/Отпечатки сертификата SHA

Ответ 4

В моем случае нет проблем с SHA-1

Я сделал GoogleAuth с помощью Firebase.

Я забыл добавить implementation 'com.firebaseui:firebase-ui-auth:4.3.1'

И я поставил свой собственный ключ вместо R.string.default_web_client_id, так что это была проблема. Я добавил вышеуказанную зависимость и заменил R.string.default_web_client_id своим собственным ключом.

GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestIdToken(getString(R.string.default_web_client_id))
                .requestEmail()
                .build();

Ответ 5

Если у вас есть все настройки в firebase, например, SHA-1, и вы импортировали правильный файл google-services.json, но по-прежнему получаете сообщение об ошибке, добавьте письмо поддержки в консоль Firebase.

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

Ответ 7

Я имел дело с этой проблемой в течение 2 дней! проблема заключалась в том, что использовался clientId, который я использовал, был тип Android, в то время как я должен был использовать тип веб-приложения Clientid. пожалуйста, учтите это, если у вас есть такая же проблема;)

Ответ 8

В моем случае все было хорошо, но ошибка 10 все еще происходила, я пытался сделать так: "просто", сначала я назвал firebase sdk, например,

private val onActivityResultGoogleCode = 1000
private lateinit var mGoogleSignInClient: GoogleSignInClient 



  private fun mAuth():FirebaseAuth{
   return FirebaseAuth.getInstance()
  }

 public override fun onStart() {
        super.onStart()

         mAuth().addAuthStateListener(mAuthState())
         if(mAuth().currentUser!=null){
        // logged
        }else{
        // You already instantiated 'FirebaseAuth.getInstance()' above SO

           val gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestIdToken("Cliente_Web")
                .requestEmail()
                .build()

            mGoogleSignInClient = GoogleSignIn.getClient(this, gso)
            val signInIntent: Intent = mGoogleSignInClient.signInIntent
            rl_google_container_login.setOnClickListener {
                startActivityForResult(signInIntent, onActivityResultGoogleCode)

            }
        }       
  }

Другое решение - использовать KEYSTORE в режиме отладки.

signingConfigs{
    key{
        keyAlias 'Alias'
        keyPassword 'password'
        storeFile file('C:\\Users\\AllanRibas\\AndroidStudioProjects\\tool.jks')
        storePassword 'password'
    }
}

buildTypes {
    debug{
        signingConfig signingConfigs.key
    }
}


buildTypes {
    release {
        shrinkResources true
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        debuggable true
        useProguard true
        jniDebuggable true
    }
    debug {
        shrinkResources true
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        debuggable true
        useProguard true
        jniDebuggable true
    }
}