web-dev-qa-db-fra.com

Erreur de connexion Google 12500

J'essaie d'intégrer Google Sign In dans mon application. Je n'ai pas de serveur principal, je reçois simplement les détails du compte Google connecté à mon application.

Je l'ai d'abord essayé en utilisant Exemple de connexion Google , mais une erreur s'est produite (aucune modification de code n'a été effectuée à l'exception de l'impression du chemin de pile ci-dessous). Je viens d'utiliser l'exemple SignInActivity car je n'ai pas de serveur principal.

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

D'après ce que j'ai lu, le problème pourrait être causé par Génération SHA1 .

J'ai suivi l'intégralité du guide mais apparemment cela ne fonctionne pas.

J'ai copié le SHA1 de 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

quelle pourrait en être la cause possible? 

Merci

P.S. Cela pourrait-il être une cause possible?

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

Mettez simplement à jour vos services Google Play vers la dernière version (ou 11720000 dans ce cas). Si vous utilisez AVD, les images Nexus 5 et 5X prennent en charge Google Play. Une fois que l'émulateur est opérationnel, accédez au menu Contrôles étendus> Google Play, puis mettez-le à jour.

22
Strauss

Erreur PlatformException (sign_in_failed, com.google.Android.gms.common.api.ApiException: 12500:, null)

Cette erreur 12500 peut être résolue en ajoutant une adresse électronique de support à votre projet dans les paramètres du projet. Ouvrir lien https://console.firebase.google.com/

Sélectionnez Votre projet et ouvrez l'onglet Paramètres.

Fournissez un courrier électronique d'assistance valide et redémarrez votre application maintenant.

enter image description here

37
Maddu Swaroop

Vérifiez si les empreintes digitales SHA-1 sont ajoutées aux paramètres du projet Firebase. Sinon, trouvez l’empreinte SHA-1 en utilisant

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

Recherchez également l’empreinte SHA-1 de la clé de déblocage à l’aide de

keytool -list -v -keystore <keystore path>

Supprimez <keystore path> avec le chemin du magasin de clés.

Ajoutez ensuite les deux empreintes digitales SHA-1 aux paramètres des projets firebase.

NB: N'oubliez pas de remplacer google-services.json par google-services.json mis à jour par de nouvelles empreintes digitales. J'ai perdu deux jours à ce sujet.

Pendant le débogage

Android studio automatiquement génère~/.Android/debug.keystore sur le premier debug build et l’utilise pour signer l’application.

Pour que SHA-1 soit exécuté (mot_de_passe Android) ( doc ):

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

Ce SHA-1 doit être ajouté aux paramètres de l'application à l'adresse firebase pour permettre l'utilisation des fonctionnalités de connexion à Google lors du test de la création du débogage.

35
Niyas Nazar

 pour l'erreur 12500 Vous devez ajouter le support gmail dans les paramètres de firebase uniquement et pour l'erreur 10 ajouter l'empreinte digitale SSH dans la console Firebase, comme vous le voyez sur l'image.

31
Vijay

Les e-mails de support, ainsi que tous les liens de projet et de confidentialité sont nécessaires au fonctionnement de Google SignIn, sinon la valeur est 12500.

Définissez-le sur https://console.developers.google.com/apis/credentials

Ceci n'est mentionné nulle part ailleurs dans les guides de Firebase.

25
zub0r

Essayez de mettre à jour l'écran de consentement OAuth sur https://console.developers.google.com/apis/credentials

17
Fauzi Danartha

Je suis resté coincé pendant un moment.

Assurez-vous que ces étapes sont effectuées-

  • La bonne clé SHA est enregistrée dans la console Firebase.
  • Téléchargez la dernière version de google-service.json
  • Et Dernier et le plus important Enregistrer OAuth consentement sous les informations d'identification dans Google Api, Écran OAuth Cela a pris une long à comprendre. Et cela a bien fonctionné après cela.
14
Pranjal Gupta

On dirait que votre SHA1 est écrasé par Google Play Store ..__ Vérifiez dans votre Google Play Store, le panneau de lancement, sous la signature de l'application, et voyez si un ajout de SHA1 a été ajouté sur Google Play.

Et copier que SHA1, ajouter à votre place pertinente, ferait le travail.

10
Paul Zhang Ising

J'utilise l'authentification Firebase. Mon SHA-1 était indiqué correctement, l’identité du client était également correcte mais je recevais toujours 12500.

Il s’est avéré que mon problème était que je n’indiquais pas email de support dans les paramètres de mon projet. (Paramètres -> onglet Général -> section Votre projet (Paramètres publics)).

5
algrid

Tout d’abord, assurez-vous que vous avez enregistré votre application dans la console des développeurs google

Assurez-vous que vous avez les clés debug et release dans votre application Firebase. Si cette erreur apparaît en production, ajoutez votre SHA-1 release key à l'application de base Fire. S'il apparaît en développement, ajoutez votre SHA-1 debug key.

 Where to add SHA-1 finger print

Obtenir la clé de débogage/libération:

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

Assurez-vous de télécharger le google-services.json mis à jour dans votre application.

3
Denn

Je pense que l'erreur est venue du mauvais SHA1. N'oubliez pas que le SHA1 est différent entre le mode de publication et le mode de débogage dans le studio Android. Au lieu d'utiliser keytool pour obtenir le SHA1, vous pouvez utiliser le projet Gradle -> Tâche -> Android -> signature signant un rapport dans le studio Android (vous pouvez l'ouvrir via le menu Affichage -> Fenêtre d'outils -> gradle) pour obtenir la libération et le débogage de SHA1. Après cela, pour un travail facile, vous devez créer deux informations d’identification distinctes avec deux SHA1 sur la console google cloud (google demande simplement de créer une en utilisant la version SHA1. Lorsque nous la développerons, cela ne fonctionnera pas car elle utilise le débogage SHA1).

2
Bioz Nguyen

S'il y a toujours quelqu'un avec un problème similaire, si vous ajoutez des étendues personnalisées, assurez-vous que c'est une étendue valide. Dans mon cas, j'ai mélangé les champs d'application de Facebook avec ceux de Google et il m'a fallu un certain temps pour le comprendre!

2
Paulo Taylor

Accédez à votre projet dans la console Firebase, ouvrez Paramètres du projet, ajoutez vos empreintes de certificat SHA ici. Téléchargez le fichier google-services.json mis à jour et ajoutez-le à votre dossier de l'application Projects.

Cela a fonctionné pour moi.

 Firebase console Screenshot

1
Nishant Rai

J'ai rencontré le même problème après avoir ouvert mon projet sur un autre ordinateur (Android Studio différent) . Dans mon cas, je l'ai résolu à l'aide de l'Assistant Firebase, que j'avais utilisé pour configurer Firebase au départ. Ouverture de l’assistant Firebase Assistant (Outils> Firebase) et sélection de Authentification> Connexion . Cela a permis de reconnecter le projet à Firebase et de mettre à jour les configurations.

1
allo

Je suis coincé dans le numéro de connexion de Google depuis 2 semaines, enfin, j'ai bien trié le problème. Vous pouvez expliquer la raison. Le problème était lié à la base de feu. Dans firebase, ils ont mentionné un champ "email de support" comme facultatif. Mais une fois que je l'ai ajouté (n'importe lequel de vos courriels personnels), le problème a été réglé et j'ai obtenu la réponse. Si vous obtenez une erreur 12501, elle est liée aux paramètres de votre compte Google.

1
Juniorcoder

Si vous venez ici de flutter : c'est l'un des coins cas nous devons résoudre selon la documentation ici: https://pub.dev/packages/google_sign_inenter image description here

  • Aller à API Google et Services
  • Sélectionnez l'application dans laquelle vous souhaitez mettre en œuvre Google Signin.
  • Puis cliquez sur Activer APIS et les services

enter image description here

  • Puis recherchez l'API Google Peoples

enter image description here

  • Ouvrez la carte de l'API Google People et cliquez sur Activer. Il est possible que votre application résolve le problème.
1
erluxman

Pour moi, le problème consistait à utiliser un ClientID 'release' avec mon application configurée pour le débogage. Assurez-vous de disposer d'une clé de version et d'une clé de débogage, en utilisant chaque SHA-1, respectivement. 

1
peresisUser

Il peut également arriver que le compilateur Cordova ne parvienne pas à trouver le fichier de magasin de clés approprié.



Solution: Avant d’exécuter ionic cordova build Android, spécifiez les propriétés de signature

Step-1: générer un fichier de magasin de clés de débogage

Exécuter la commande

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

Utilisez le mot de passe: Android

Étape 2: Copiez le fichier de magasin de clés (debug.keystore) du répertoire ~/.Android vers le répertoire platform/Android de votre projet actuel.

Étape 3: Créez un fichier nommé release-signing.properties dans le répertoire platform/Android

Étape 4: Ajouter le contenu du fichier

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

Remarque: Ce sont les valeurs par défaut. Si vous avez fourni un alias et un mot de passe personnalisés, utilisez-les en conséquence. 

Étape 5: Construisez maintenant ionic cordova build Android

1
Debojyoti

Lorsque votre application s'authentifie auprès d'un serveur dorsal ou accède aux API Google à partir de votre serveur dorsal, vous devez transmettre l'ID client OAuth 2.0 créé pour votre serveur à la méthode requestIdToken lors de la création de l'objet GoogleSignInOptions. accédez aux informations de profil de base de l'utilisateur, puis n'oubliez pas de soumettre le courrier électronique d'assistance dans l'écran de consentement OAuth situé dans la page Informations d'identification de la console de l'API.

1

Assurez-vous que les éléments suivants sont correctement configurés:

  1. Générez un identifiant client dans votre projet Google.
  2. Fournissez la clé SHA-1 appropriée pour cet ID client. (débogage/libération)
  3. Indiquez le nom de package approprié pour cet ID client.
  4. Assurez-vous d’avoir généré l’ID client dans le fichier strings.xml, google-services.json ou credentials.json.
0
Chintan Shah

L'erreur est apparue lorsque l'option Google n'a pas été activée, comme indiqué dans l'image .

C'est arrivé lorsque j'ai changé de compte Google et que j'ai oublié d'activer l'option de connexion à Google.

0
Yonibagi

Dans mon cas, je travaillais sur une application non productive, le problème était que lors de la création d'un projet dans la console Firebase, il y avait des problèmes de synchronisation des clés SHA-1 à partir des consoles de développement Firebase & Google. J'ai donc décidé de créer le projet d'abord sur la console Google Developer, puis de le sélectionner lors de la création d'un nouveau projet sur la console Firebase.

J'ai également fait un tutoriel pour cela, cela peut vous aider.

0
Zain

https://developers.google.com/identity/sign-in/Android/sign-in suivez cette documentation api mais gardez à l'esprit que, dans WEB_CLIENT_ID, utilisez la valeur de l'ID client générée dans 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

Dans mon cas, c'est à cause du mauvais identifiant Google Client . Je remplace ma clé par la clé répertoriée dans google-services.json (sous l'objet oauth_client). 

0
thuanle

Dans mon cas, après l’ajout de l’empreinte digitale dans la console Firebase, celle-ci a été automatiquement sélectionnée par la console développeur de Google et l’affiche. Mais la connexion n'a pas fonctionné. Après avoir examiné chaque étape, je me suis dit que Google inversait mon paquet de fichiers manifeste comme ceci com.xxxxxxxx.app. Mais il s’agit en réalité de app.xxxxxxxx.com, dans la console de développement Google. J'ai donc supprimé automatiquement créé une empreinte et ajouté une empreinte avec le nom de package correct. BOOM!!. Ça a marché. 

0
Naroju

Assurez-vous que votre projet ne contient aucun caractère spécial, y compris numérique ou tout type de symbole (le nom du projet doit être simple, par exemple com.google.testproject).

0
Sekhon123