web-dev-qa-db-fra.com

La connexion à Google a échoué. Com.google.Android.gms.common.api.ApiException: 10:

Donc, je suis coincé sur ce problème frustrant . Je suis assez nouveau pour Google Auth sur Firebase, mais j’ai fait tout ce que la documentation Firebase avait expliqué pour intégrer l’authentification Google SignIn, mais je reçois toujours cette erreur console composée de deux parties:

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

et aussi

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

Avant Tout le monde essaie de signaler des questions similaires qui ont déjà été posées sur le dépassement de capacité de la pile. Voici ce que j'ai fait jusqu'à présent après avoir vu toutes les solutions disponibles et pourtant résolu non l'erreur

  • J'ai mon empreinte SHA1 pour mon projet
  • J'ai mon ID client OAuth 2.0, l'ID client Android et le client Web, et dans le requestIdToken (), j'ai mis l'identifiant client Web.
  • J'ai non publié l'APK de mon projet sur Google Play Store. ce qui signifie que je n'ai pas généré accidentellement une autre empreinte digitale SHA1.
  • J'ai suivi pas à pas les documents Google FireBase Auth de Google Sign in.

voici mon extrait de code:

@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's 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]
                }
            });
}
20
Hudi Ilfeld

Le problème réside essentiellement dans la clé SHA1 placée sur la console, veuillez la régénérer et reprendre le même projet.

1) En guise de réponse, assurez-vous que votre apk Android signée réelle a la même empreinte digitale SHA1 que celle spécifiée dans la console de la section d'intégration Android de votre projet Firebase (la page où vous pouvez télécharger le google-services.json).

2) En plus de cela, allez dans les paramètres de votre projet firebase (icône d'engrenage à droite dans la vue d'ensemble en haut à gauche. Ensuite, passez à l'onglet Lien au compte. Sur cet onglet, liez Google Play à votre projet.

30
Dilip

Si vous avez toute la configuration valide dans Firebase comme SHA-1 et que vous avez importé le bon fichier google-services.json, vous obtenez toujours une erreur alors ajoutez l'email de support dans la console Firebase

Vous devez ajouter un courrier électronique d'assistance dans la console de base Fire. Sélectionnez Projet-> Paramètres -> Général -> Paramètre public.

3

J'étais confronté au même problème. Après avoir recherché une solution, de la régénération de l'empreinte digitale à la liaison de l'application sur Firebase à la console de jeu de Google et à la publication de l'apk signé, le problème était en réalité dû au fait que j'utilisais la version SHA-1 sur la console de base de feu. 

  • Si vous êtes toujours en mode début, utilisez le debug.keystore SHA1
  • Utilisez la version SHA1 uniquement si vous êtes en mode de production

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

3
Gomez NL

Dans mon cas, il n'y a pas de problème avec SHA-1

J'ai fait GoogleAuth en utilisant Firebase.

J'ai oublié d'ajouter implementation 'com.firebaseui:firebase-ui-auth:4.3.1'

Et j'ai mis ma propre clé à la place de R.string.default_web_client_id. C'était donc le problème. J'ai ajouté la dépendance ci-dessus et remplacer R.string.default_web_client_id par ma propre clé.

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

Lorsque vous utilisez Signature d'application par Google Play et Firebase , vous devez ajouter l'empreinte SHA-1 du certificat de signature App (disponible sur la console Google Play/Certificat de signature d'application/Gestion) dans la console Firebase/Paramètres/Empreintes digitales du certificat SHA

0
Assaf S.

Je ne suis pas sûr que ce soit la cause, mais nous devrons peut-être utiliser l'ID de client Web dans l'application Android avant de la publier, lisez l'article suivant,

https://Android-developers.googleblog.com/2016/03/registering-oauth-clients-for-google.html

0
Ashwin Balani