167 votes

Erreur de connexion Google 12500

J'essaie d'intégrer Google Sign In dans mon application. Je n'ai pas de serveur dorsal, je me contente de récupérer les détails du compte Google connecté dans mon application.

J'ai d'abord essayé en utilisant Exemple de connexion à Google mais j'ai obtenu une erreur (aucun changement de code n'a été effectué, à l'exception de l'impression de la trace de pile ci-dessous). J'ai juste utilisé l'exemple SignInActivity car je n'ai pas de serveur back-end.

 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 peut être causé par Génération SHA1 .

J'ai suivi l'intégralité guide mais apparemment ça ne marche pas.

J'ai copié le SHA1 de gradle signatureRapport

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 être la cause de ce problème ?

Gracias

P.S. Est-ce que cela pourrait être une cause possible ?

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

0 votes

Hey, pouvez-vous s'il vous plaît poster votre code

0 votes

Hi @Dilip J'ai littéralement utilisé ceci :) github.com/googlesamples/google-services/tree/master/Android/ . Je l'ai quand même mis à jour

1 votes

Alors, que se passe-t-il si vous obtenez la même erreur ou quoi que ce soit d'autre ? Une chose, s'il vous plaît, faites une fois de plus SHA1 manuellement et mettez à la console du développeur contre votre APP et vérifiez le nom du paquet et téléchargez le fichier google-services.json et mettez au niveau de l'application.

239voto

Maddu Swaroop Points 499

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

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

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

Fournissez un courriel de soutien valide et redémarrez votre application maintenant.

enter image description here

15 votes

Merci ! Cette erreur est assez cryptique, elle peut signifier n'importe laquelle des choses mentionnées dans les réponses ici. Mon problème était celui-ci :(

7 votes

J'ai fait tout ce qui est mentionné dans la console du développeur developers.google.com/identity/sign-in/Android/sign-in et après avoir passé une journée à essayer de mettre l'empreinte SHA-1 et tout ça, c'était le problème. Vous m'avez aidé. Merci beaucoup !

0 votes

Essayez d'ajouter une clé SHA1 pour votre projet @RohitSingh

56voto

Niyas Nazar Points 582

Vérifiez si les empreintes SHA-1 sont ajoutées aux paramètres du projet firebase. Si non, trouvez l'empreinte SHA-1 en utilisant

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

De plus, trouvez l'empreinte SHA-1 de la clé de libération en utilisant

keytool -list -v -keystore <keystore path>

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

Puis ajoutez les deux empreintes SHA-1 aux paramètres des projets firebase.

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

Pendant le débogage

Android studio automatiquement générer ~/.android/debug.keystore sur le premier déboguer la construction et l'utiliser pour signer l'application.

Pour obtenir l'exécution SHA-1 (mot de passe android ) ( doc ) :

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

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

3 votes

Comment êtes-vous certain qu'il utilise Firebase ?

0 votes

Je l'ai deviné (similarité dans le code et serverless). Le projet Firebase est également connecté à la console GCP. Nous pouvons également modifier les empreintes digitales dans les informations d'identification GCP.

0 votes

Même erreur avec, mais dans mon cas ce n'était pas lié à firebase (je ne l'utilise pas).

55voto

zub0r Points 716

Support email et aussi tous les liens relatifs au projet et à la vie privée sont nécessaires pour que Google SignIn fonctionne, sinon il lance 12500.

Mettez-le sur https://console.developers.google.com/apis/credentials en bas du deuxième onglet intitulé "écran de consentement OAuth" - vous y trouverez trois liens qui doivent être configurés.

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

3 votes

Merci, cela fonctionne pour moi. J'ai perdu presque des jours entiers à résoudre ce problème.

2 votes

Merci, j'ai juste ajouté un des "domaines autorisés" aux liens de confidentialité et tout a fonctionné. Vous m'avez épargné quelques heures d'essais et d'erreurs.

0 votes

Cette réponse devrait être acceptée. J'ai lutté avec cela pendant 2 jours, sans aucun succès. Google devrait mettre à jour les guides, pour le moment leur documentation est trompeuse, leur guide ne fonctionnera jamais et le code d'erreur ne dit rien.

53voto

Vijay Points 351

pour l'erreur 12500 vous devez ajouter support gmail dans les paramètres de firebase seulement et pour l'erreur 10 ajouter ssh fingerprint dans la console firebase comme vous le voyez dans l'image.

0 votes

Bonne et directe réponse, juste configuré mon compte gmail et bam il fait le reste

0 votes

"pour l'erreur 12500 vous devez ajouter support gmail dans les paramètres de firebase seulement et pour l'erreur 10 ajouter ssh fingerprint dans la console firebase comme vous le voyez dans l'image" Cela a vraiment aidé. J'obtenais 12500, j'ai appliqué l'empreinte SHA1 et ça ne marchait toujours pas. L'ajout de l'adresse électronique SUPPORT EMAIL m'a aidé. Merci !

0 votes

@Vijay J'ai le même problème mais l'ajout d'une adresse e-mail ne résout pas mon problème. stackoverflow.com/questions/64587610/ Veuillez m'aider

49voto

Strauss Points 241

Il suffit de mettre à jour vos services Google Play à la dernière version (ou 11720000 dans ce cas). Si vous utilisez AVD, les images des Nexus 5 et 5X supportent Google Play. Une fois que l'émulateur est en marche, allez dans le menu Contrôles étendus > Google Play puis mettez à jour.

1 votes

Comment le faire sur les appareils Samsung ?

12 votes

Ce n'est pas le problème dans mon cas. Les services Google Play sont déjà à jour.

0 votes

@zub0r's solution concernant liens vers les projets et la vie privée devrait être acceptée comme la réponse correcte.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X