web-dev-qa-db-de.com

Google-Anmeldung Android mit Firebase - statusCode DEVELOPER_ERROR

Ich versuche, Google Login in meiner mit Firebase verbundenen Android-App zu implementieren ... Wenn ich die App starte und auf Google Sign In drücke, passiert nichts. Ich erhalte diesen Fehler in onActivityResult: Status {statusCode = DEVELOPER_ERROR, Auflösung = null} .

Mein Code sieht so aus:

     protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    if (requestCode == REQUEST_CODE_GOOGLE_LOGIN) {
        GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);

        if (result.isSuccess()){
            GoogleSignInAccount account = result.getSignInAccount();
            String emailAddres = account.getEmail();
            getGoogleQAuthToken(emailAddres);
        }
    }
}

         private void getGoogleQAuthToken(final String emailAddres){
             AsyncTask<Void,Void,String> task = new AsyncTask<Void, Void, String>() {
                 String errorMessage = null;

                 @Override
                 protected String doInBackground(Void... params) {
                     String token = null;
                     try {
                         String scope = "oauth2:profile email";
                         token = GoogleAuthUtil.getToken(MainActivity.this, emailAddres, scope);
                     } catch (IOException transientEx) {

                         errorMessage = "Network error: " + transientEx.getMessage();
                     } catch (UserRecoverableAuthException e) {
                         Intent recover = e.getIntent();
                         startActivityForResult(recover, MainActivity.REQUEST_CODE_GOOGLE_LOGIN);
                     } catch (GoogleAuthException authEx) {
                         errorMessage = "Error authenticating with Google: " + authEx.getMessage();
                     }
                     return token;
                 }

Ich habe die JSON-Konfigurationsdatei im Verzeichnis app/hinzugefügt und Abhängigkeiten hinzugefügt:

     buildscript {
repositories {
    jcenter()
}

dependencies {
    classpath 'com.google.gms:google-services:1.5.0-beta2'
}
     }


     dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.Android.support:appcompat-v7:23.1.+'
compile 'com.firebase:firebase-client-Android:2.3.0+'

/* For Google Play Services */
compile 'com.google.Android.gms:play-services-safetynet:8.3.0'
compile 'com.google.Android.gms:play-services-auth:8.3.0'
compile 'com.google.Android.gms:play-services:8.3.0'

compile('com.afollestad.material-dialogs:core:[email protected]') {
    transitive = true
}

/* Firebase UI */
compile 'com.firebaseui:firebase-ui:0.2.2'

compile 'com.Android.support:cardview-v7:23.1.+'
compile 'com.Android.support:recyclerview-v7:23.1.+'
compile 'com.Android.support:design:23.1.+'


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

Ich suche schon nach Lösungsstunden ... Bitte helfen Sie !!

18
user5866501

DEVELOPER_ERROR bedeutet, dass die Google Play-Dienste keinen passenden Client in der Konsole gefunden haben, basierend auf Ihrem SHA1 und Paketnamen. Sie können SHA1s auf der Einstellungsseite der Firebase-Konsole für einen bestimmten Paketnamen hinzufügen oder einen neuen Paketnamen über die Schaltfläche Add Firebase zu Ihrer Android-App hinzufügen. 

Im Allgemeinen sind einige Dinge zu überprüfen: 

  • Stellen Sie sicher, dass der Name Ihres Pakets Ihren Erwartungen entspricht - z. Es ist das eine in Ihrem build.gradle, und es wird nicht in einer Build-Variante oder Produktvariante überschrieben.
  • Stellen Sie sicher, dass Sie Ihr Debugging registriert haben und geben Sie SHA1-Schlüssel in der Konsole frei. 
23
Ian Barber

Wenn Google Play App Signing für Ihre App aktiviert ist, wird der Freigabesignaturschlüssel vor dem Veröffentlichen durch den auf dem Googles-Server angegebenen Schlüssel ersetzt. Sie können über den Google Play Console -> Release Management -> App Signing überprüfen, ob er aktiviert ist.

In meinem Fall musste ich den SHA1 aus dem Abschnitt "App-Signaturzertifikat" kopieren und den allgemeinen Einstellungen für Firebase-Projekte hinzufügen, die Json-Datei neu generieren, sie dem Projekt hinzufügen und die APK erneut laden, und der Fehler wurde behoben.

15
g2server

Fehlercode 10 ist ein konstanter Wert von CommonStatusCodes.DEVELOPER_ERROR, was bedeutet, dass Sie Ihr Projekt falsch konfiguriert haben

Was du tun kannst

  • prüfen Sie, ob SHA in PlayStore Console und Firebase Console identisch ist.

    Kopieren Sie SHA von der Google Play-Konsole.

     enter image description here

füge es in die Firebase Console ein

 enter image description here

Was kannst du noch tun?

Zeigen Sie aussagekräftige Meldungen im einfachen englischen Fehlerfall an

          // Google Sign In failed, update UI appropriately
            Log.w(TAG, "Google sign in failed", e);

            String messageToDisplay = "Authentication failed.";
            switch (e.getStatusCode()) {
                case CommonStatusCodes.API_NOT_CONNECTED: //17
                    messageToDisplay += "The client attempted to call a method from an API that failed to connect.";
                    break;

                case CommonStatusCodes.DEVELOPER_ERROR: //10
                    messageToDisplay += "The application is misconfigured.";
                    break;

                case CommonStatusCodes.ERROR: //13
                    messageToDisplay += "The operation failed with no more detailed information.";
                    break;

                case CommonStatusCodes.INTERNAL_ERROR: //8
                    messageToDisplay += "An internal error occurred.";
                    break;

                case CommonStatusCodes.INVALID_ACCOUNT: //8
                    messageToDisplay += "Invalid account name specified.";
                    break;

                case CommonStatusCodes.SIGN_IN_REQUIRED: //8
                    messageToDisplay += "Please Sign In to continue.";
                    break;
            }

            Toast.makeText(LoginActivity.this, messageToDisplay,
                    Toast.LENGTH_SHORT).show();
7
Hitesh Sahu

Ich hatte das gleiche Problem. Was passiert, ist, dass Sie ein SHA1-Debugging haben und SHA1 freigeben. Normalerweise haben wir nur SHA1 Debug verwendet und das .apk für Google Play erstellt. Wenn Sie jedoch Google Sigin verwenden, müssen Sie das Firebase-Release von SHA1 eingeben.

Um die Version SHA1 anzuzeigen, verwenden Sie den folgenden Befehl:

 keytool -list -v -keystore C:\ProjectsData\keystore\my-release-key.keystore -alias alias_name 

Geben Sie dann diesen SHA1 auf der Firebase ein

https://support.google.com/firebase/answer/7000104

Diese Antwort SHA1:

SHA-1 Fingerprint des Keystore-Zertifikats

Ich hoffe ich habe dir geholfen. 

6
Ismael Junior

Ich hatte das gleiche Problem und habe es mit diesen Schritten zum Laufen gebracht:

1. Fügen Sie dem Firebase-Projekt den Fingerabdruck DEBUG_KEYSTORE SHA1 hinzu. Verwenden Sie den folgenden Befehl (MAC/LINUX)

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

2. Erzeugen Sie jetzt eine signierte apk Ihres Projekts. Der Prozess umfasst das Erstellen eines Keystores für die Release-Version Ihrer App. Kopieren Sie den Pfad der neu generierten .jks-Datei.

3. Generiere jetzt den RELEASE_KEYSTORE SHA1-Fingerabdruck mit dem folgenden Befehl

keytool -list -v -keystore FULL_PATH_TOJKS_FILE -alias ALIAS_NAME

4. Kopieren Sie den neuen SHA1 aus der Ausgabe und fügen Sie ihn als weiteren SHA1-Fingerabdruck in Ihre Firebase-Anwendungskonsole ein.

Jetzt bist du gut zu gehen! ---- Hoffen! es hilft.

1
Udit Kapahi

Ich habe den neuen Debug-SHA1-Schlüssel mit den folgenden Schritten erstellt und den SHA1-Schlüssel in meinen Projekteinstellungen ersetzt. es hat für mich funktioniert.
- Öffnen Sie Ihr Projekt.
- Klicken Sie auf Datei -> Neu -> Klicken Sie auf Google -> Wählen Sie Google Maps-Aktivität aus -> Klicken Sie auf Fertig stellen. - Android Studio generiert eine automatische Datei google_maps_api.xml.
- In dieser Datei erhalten Sie den Debug-SHA1-Schlüssel. 

Ersetzen Sie diesen SHA1-Schlüssel in den Projekteinstellungen. Laden Sie dann den neuen google-services.json aus den Einstellungen herunter und ersetzen Sie ihn in Ihrem Projekt, da sich certificate_hash und client_id ändern.

1
Srikanth

Ich denke, Sie müssen Ihre Play-Service-Version ändern.

Siehe Firebase Android Codelab , um der App/build.gradle-Datei Firebase Auth-Abhängigkeit hinzuzufügen.

Versuchen Sie, Ihren Spieldienst in Gradle wie folgt zu aktualisieren:

/* For Google Play Services */
...
compile 'com.google.Android.gms:play-services:9.0.0'
...

ENTWICKLER_ERROR :

Die Anwendung ist falsch konfiguriert. Dieser Fehler kann nicht behoben werden und wird als fatal behandelt. Der Entwickler sollte sich danach die Protokolle ansehen, um ausführlichere Informationen zu ermitteln.

0
pRaNaY

Beim Erstellen des OAuth-Schlüssels müssen Sie sicherstellen, dass Sie den richtigen Paketnamen angeben. Dies bedeutet den Paketnamen, der in Ihrer Manifestdatei enthalten ist. 

Wenn Sie mehrere Module verwenden (z. B. eine Bibliothek wie FirebaseUI-Android), stellen Sie sicher, dass Sie beim Erstellen des Schlüssels den Paketnamen verwenden, von dem Sie die Google-Authentifizierung anfordern. 

0
jaibatrik

Klicken Sie auf Here (Google Developer guide line) und erstellen Sie ein neues Projekt für die Firebase-Konsole Dieser Link ist auf die Standardeinstellung gesetzt, sodass Sie ihn nicht manuell hinzufügen müssen 

0
Prashant Gosai

Ich hatte das gleiche Problem. Nach zwei Tagen Schmerzen bemerkte ich, dass meine Version SHA1 unkorrekt war (ich habe sie mit dem Keytool in Java/bin erhalten und es gab mir ein schlechtes SHA1. Wahrscheinlich weil Android Studio jetzt ein eigenes Java-Paket und nicht das JDK verwendet) . Besserer Weg, den korrekten SHA1 hier zu erhalten SHA-1 Fingerabdruck des Keystore-Zertifikats

0
Dan Alboteanu