wake-up-neo.net

Android Google SignIn funktioniert nicht im Debug-Modus: GoogleSignInResult ist false

Ich habe dieses Tutorial befolgt, um Google SignOn zum Laufen zu bringen: https://developers.google.com/identity/sign-in/Android/start-integrating

Wenn ich meine Anwendung lokal mit einem virtuellen Gerät ausführe, funktioniert dies einwandfrei. Wenn ich sie jedoch per Debugging auf meinem Gerät bereitstelle oder wenn ich eine signierte JAR-Datei generiere und sie manuell kopiere, GoogleSignInResult gibt false immer eine INTERNAL ERROR-Nachricht zurück.

Ich habe seit geraumer Zeit Probleme, Google Login verwenden zu können, wenn die Anwendung über Debug auf meinem Gerät bereitgestellt wird. Jede Hilfe wird sehr geschätzt!

Lösung für mein Problem:

Dort, wo Sie die Json-Datei herunterladen, müssen Sie den Code kopieren, den Sie mit dem Java-Key-Tool generieren können. Ich habe das ein paar Mal hintereinander total vermisst.

21
Markus

Vermutlich fehlt Ihnen die Registrierung der Dev-Konsole. Es ist üblich, dass Entwickler über mehrere Signierungszertifikate verfügen: Debug-Schlüsselspeicher, Testumgebungszertifikat, Produktionssignaturzertifikat. Das signing cert SHA1 + -Paketname identifiziert eindeutig einen Android-Client und muss einzeln in der dev-Konsole registriert werden. 

Im folgenden Blogpost finden Sie weitere Informationen zur Registrierung von OAuth-Kunden:

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

Oder sehen Sie diesen Beitrag: Testen Sie Google Signin auf Android in der Entwicklungsphase

12
Isabella Chen

Ich hatte das gleiche Problem und es lag daran 

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

nicht am Ende der App build.gradle.

Ich habe es durch einen Blick auf die Gradle Console herausgefunden. Es wurden keine Fehler gemeldet.

5
George

Grund für das kann sein: - Möglicherweise verwenden Sie ein nicht signiertes apk, um Ihre App zu testen.

Gehen Sie zu Build-> Generated Signed APK -> und unterschreiben Sie es mit dem Schlüssel, den Sie verwendet haben, um Ihren SHA1 Fingerprint für die ClientID in der Google Developer Console zu verwenden

Führen Sie app-debug.apk aus und fertig!

3
Mayank Aggarwal

BEARBEITET

Die Antwort leitet sich von this ab, da sie auch für dieses Problem anwendbar ist

Ich füge die Antwort hier bei

Das Problem ist auf das Signaturzertifikat und den Fingerabdruck des SHA-1-Zertifikats zurückzuführen. Fügen Sie die folgenden SHA-1-Zertifikate Ihren googleApi-Anmeldeinformationen hinzu. Es gibt 2 Fälle

1.Falls Sie sich im Debug-Modus befinden, fügen Sie den SHA-1-Fingerabdruck hinzu, der durch Folgendes erzeugt wird

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

2. Wenn Sie Signing Config konfiguriert haben, verwenden Sie den SHA-1-Fingerabdruck, der wie folgt generiert wird

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

Ich empfehle Ihnen, beide SHA-1-Fingerabdrücke in Ihre googleApi-Anmeldeinformationen aufzunehmen

3
jafarbtech

Zusätzlich zu den obigen Antworten stieß ich auf einen Fall, in dem das Problem aufgrund einer nicht übereinstimmenden Konfiguration der Datei google-services.json verursacht wurde:

Es ist auch möglich, dass die clientId im GoogleSignInOptions Builder wie folgt speziell zugewiesen wurde:

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

In diesem Fall ist es möglich, den Verweis auf die serverClientId und den requestIdToken-Aufruf wie folgt zu entfernen:

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

Dies würde dann auf google-services.json im Gegensatz zum hartcodierten Wert während der Konfiguration zurückgreifen.

Ich hoffe, es erspart jemandem die Mühe, die ich versucht hatte, den Fehler in meinem Projekt zu diagnostizieren.

0
Matthew Spencer