web-dev-qa-db-fra.com

Android Google SignIn ne fonctionne pas en mode débogage: GoogleSignInResult est false

J'ai suivi ce didacticiel pour lancer Google SignOn: https://developers.google.com/identity/sign-in/Android/start-integrating

Lorsque je lance mon application localement avec un périphérique virtuel, cela fonctionne bien, mais lorsque je la déploie sur mon périphérique via le débogage ou si je génère un fichier jar signé et le copie manuellement, GoogleSignInResult renvoie toujours false avec un message INTERNAL ERROR.

Je ne parviens pas à utiliser Google Login lors du déploiement de l'application via débogage sur mon appareil depuis un certain temps. Toute aide est grandement appréciée!

Solution pour mon problème:

Lorsque vous téléchargez le fichier json, vous devez copier le code que vous pouvez générer avec l’outil clé Java. Cela m'a totalement manqué plusieurs fois de suite.

21
Markus

Il vous manque probablement l'enregistrement de la console de développement. Il est très courant que les développeurs aient plusieurs configurations de certificats de signature: magasin de clés de débogage, certificats de signature de l’environnement de test, certificats de signature de la production. Le certificat certifiant signature SHA1 + identifie de manière unique un client Android et doit être enregistré individuellement dans la console de développement. 

Voir ci-dessous blogpost pour en savoir plus sur l'enregistrement des clients OAuth:

http://Android-developers.blogspot.com/2016/03/registering-oauth-clients-for-google.html

Ou consultez ce message: Testez Google Signin sur Android en phase de développement

12
Isabella Chen

J'ai eu le même problème et c'était dû à 

apply plugin: 'com.google.gms.google-services'

ne pas être au bas de l'application build.gradle.

Compris en regardant la console Gradle. Aucune erreur n'a été soulevée.

5
George

La raison pour la peut être: - Vous utilisez peut-être un apk non signé pour tester votre application.

Allez dans Construire-> Générer un APK signé -> / signez-le avec la clé que vous avez utilisée pour que votre empreinte digitale SHA1 crée un ID client sur la console de développeur Google.

Exécutez app-debug.apk et c'est fait !!

3
Mayank Aggarwal

ÉDITÉ

La réponse est dérivée de this , comme cela s’applique aussi à ce problème

Je joins la réponse ici

Le problème est dû au certificat de signature et à l'empreinte digitale du certificat SHA-1. Ajoutez les certificats SHA-1 suivants à vos informations d'identification googleApi. il y a 2 cas

1.Si vous exécutez en mode débogage, ajoutez l’empreinte SHA-1 générée par le message suivant.

"C:\Program Files\Java\jre1.8.0_101\bin\keytool" -list -v -keystore "%USERPROFILE%\.Android\debug.keystore" -alias androiddebugkey -storepass Android -keypass Android

2.Si vous avez configuré Signing Config, utilisez les empreintes digitales SHA-1 générées en suivant

"C:\Program Files\Java\jre1.8.0_101\bin\keytool" -list -v -keystore "[youKeyPath]\youKey.jks"

Je vous recommande d'ajouter les empreintes digitales SHA-1 dans vos informations d'identification googleApi.

3
jafarbtech

En plus des réponses ci-dessus, je suis tombé sur un cas où le problème était dû à une configuration incompatible avec le fichier google-services.json:

Il est également possible que le clientId ait été spécifiquement affecté dans le générateur GoogleSignInOptions, comme indiqué ci-dessous:

    String serverClientId = "xxxxx-yyyy.apps.googleusercontent.com";
    GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestEmail()
            .requestIdToken(serverClientId)
            .build();

Si tel est le cas, il est possible de supprimer la référence à l'appel serverClientId et à l'appel requestIdToken comme indiqué ci-dessous:

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

Cela s'appuierait alors sur google-services.json, par opposition à la valeur codée en dur lors de la configuration.

J'espère que cela évitera à quelqu'un d'autre le problème que j'ai eu pour tenter de diagnostiquer la faille de mon projet.

0
Matthew Spencer