Fehler: Status {statusCode = DEVELOPER_ERROR, Auflösung = null}


101

Ich bin usign gplus, melde mich an und erhalte diesen Fehler, wenn ich in onActivityResult bin ....

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    callbackManager.onActivityResult(requestCode, resultCode, data);
    client.onActivityResult(requestCode, resultCode, data);

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

            GoogleSignInAccount acct = result.getSignInAccount();
//                Log.d("Result","details"+ acct.getDisplayName() + acct.getEmail());

            mEmail = acct.getEmail();
            String mFullName = acct.getDisplayName();
            String mGoogleplusId = acct.getId();


            SocialUser user = new SocialUser();
            user.setType("googleplus");

            user.setEmail(mEmail);
            user.setFullname(mFullName);
            user.setId(mGoogleplusId + "");
            loginParams.put("email_id", mEmail);
            loginParams.put("googlePlusId", mGoogleplusId);
            loginParams.put("full_name", mFullName);
            loginParams.put("registrationType", "googleplus");
            SignUpService(user);


        } else {
            Toast.makeText(CustomerLogIn.this, "Unable to fetch data, Proceed manually", Toast.LENGTH_SHORT).show();
        }
    }
}

Und ich rufe nach gplus Login auf Knopfdruck. Beim Klicken auf die Schaltfläche wird folgender Code ausgeführt ....

 GoogleSignInOptions googleSignInOptions = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestEmail()
            .build();
    mGoogleApiClient = new GoogleApiClient.Builder(CustomerLogIn.this)

            .addApi(Auth.GOOGLE_SIGN_IN_API, googleSignInOptions)
            .build();


    Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
    startActivityForResult(signInIntent, 0);

Und ich bekomme diesen Fehler ...

Status{statusCode=DEVELOPER_ERROR, resolution=null}

auf dieser Linie ....

GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);

Bitte schlagen Sie die Lösung vor.


1
Die Anwendung ist falsch konfiguriert. Überprüfen Sie die Google API-Konfiguration.
1'hafs

6
Ja, aber ich kann nicht herausfinden, was falsch ist.
Gurvinder Singh

Ich benutze keine Feuerbasis. Sehen Sie meine Lösung hier: stackoverflow.com/a/46828895/1160216
Mike Miller

Antworten:


213

Sie müssen Ihren SHA1-Schlüssel zur Konfiguration der Firebase-Konsole hinzufügen. Sie können dies folgendermaßen tun:

Firebase-Konsole ( https://console.firebase.google.com ) -> Ihr Projekt -> Konfiguration -> Scrollen Sie zu

Geben Sie hier die Bildbeschreibung ein

Sie finden Ihren SHA1-Schlüssel mit "Signierbericht" in Android Studio:

Geben Sie hier die Bildbeschreibung ein

Schauen Sie dann auf die Registerkarte "Ausführen" und klicken Sie auf die Schaltfläche:

Geben Sie hier die Bildbeschreibung ein

Ich denke, es ist der einfachere Weg. Ich hoffe das hilft.


1
Hier ist der einfachste Weg, um SHA-1 von der Google Entwicklerkonsole zu erhalten: stackoverflow.com/a/50124038/4923891
eren130

Ich hatte Probleme zu verstehen, wo dieser SHA-Schlüssel in der Firebase-Konsole abgelegt werden soll. Endlich gefunden. Öffnen Sie die Projekteinstellungen> Scrollen Sie nach unten, fügen Sie einen Fingerabdruck hinzu, legen Sie Ihren SHA-Schlüssel dort ab> Laden Sie die neue
Datei

1
Hinweis! Obwohl in der Firebase-Konsole Platz für SHA-256-Schlüssel-Hash vorhanden ist, MÜSSEN Sie den SHA-1-Schlüssel eingeben. Der SHA-256 wird Ihnen immer noch Fehler geben
f.khantsis

Hilfreich. Vielen Dank!
Pooja

30

Wahrscheinlich haben Sie die Konfigurationsdatei mit dem SHA1 Ihres Produktionstokens erstellt , den androiddebugkeyAlias ​​verwendet, um den SHA1 zu sammeln, der der Debug-Version Ihrer App entspricht, und die Konfigurationsdatei in das Verzeichnis 'app' kopiert. Sie sollten beide Konfigurationsdateien haben (eine für Debug-Zwecke und eine andere für die Produktionsumgebung).

Basierend auf der in https://developers.google.com/identity/sign-in/android/start veröffentlichten exemplarischen Vorgehensweise


5
Mein Fehler wurde behoben, als ich für die OAuth 2.0-Client-IDs zu den Web Client-Anmeldeinformationen anstelle des Android-Clients wechselte. Der Wortlaut verwirrt mich immer noch, als ich eine Android-App entwickle, die mit einem Webserver kommuniziert ... aber der Fehler ist zumindest verschwunden
Burrito

12

Ich hatte das gleiche Problem und habe es durch die folgenden Schritte 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.Nun Generieren Sie eine signierte Apk Ihres Projekts. Der Prozess umfasst das Generieren eines Keystores für die Release-Version Ihrer App.

  Copy the path of the newly generated .jks file.

3. Generieren Sie jetzt den Fingerabdruck RELEASE_KEYSTORE SHA1 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 können Sie loslegen! ---- Hoffnung! es hilft.


das freigegebene sha1 erst platziere und dann auch diesen Fehler bekomme, generiere google_services.xml für google sign in, analysis und gcm, einzelne Datei
Harsha

Stellen Sie sicher, dass Ihr sha1 von der 'Release'-Version der App ist, nicht von der' Debug'-Version
Udit Kapahi

Ha Ja, ich generiere signierte apk und veröffentliche sie auch im Appstore, dass JKS und Keystore-Passwörter nur verwendet werden
Harsha

Mein offenes SSL ist OpenSSL-0.9.8k_WIN32 Ich verwende Previos für die erste Entwicklung
Harsha

keytool erfordert ein Passwort : "android"
Guglie

11

Geben Sie hier die Bildbeschreibung ein

Ich habe es behoben, indem ich den Schlüssel für den hervorgehobenen Text aufgehoben habe. Aufgrund der verwirrenden Verwendung des Wortes "Server" auf der Firebase-Dokumentationsseite habe ich das aufgegriffen Server key. Welches war der Grund für das Problem.

Den Schlüssel finden Sie hier .


Vielen Dank! Hat in meinem Fall funktioniert. Ich denke, es hängt irgendwie mit der Verwendung eines eigenen Backend-Servers zusammen (und dem Aufruf von "requestServerAuthCode" in GoogleSignIn)
ITurchenko

5

Ich hatte das gleiche Problem. Wie ich es gelöst habe, war, dass ich in meiner Gradle-Datei eine andere Anwendungs-ID hatte als der Paketname in meiner Manifest-Datei. Und ich habe applicationId verwendet, um die JSON-Datei zu erstellen. Ich musste meinen Paketnamen in meine Anwendungs-ID ändern und das hat es für mich behoben.


1
Ich dachte immer, das Paket im Manifest wurde von der in gradle definierten ApplicationId überschrieben. Das ist nicht der Fall?
Flo We

3

Alternativ zu den hier bereitgestellten Antworten können Sie den Firebase-Assistenten von Android Studio verwenden, um Ihren SHA-1 mit einem Klick auf einige Schaltflächen automatisch zu Ihrem Projekt hinzuzufügen.

Gehen Sie in Android Studio zu Tools > Firebase > Select 'Authentication'und klicken Sie auf den Link mit der Aufschrift 'Email and password authentication'.

Dies bringt Ihnen ein kleines Tutorial, wie Sie die Authentifizierung in Ihr Projekt integrieren können. Da Sie dies wahrscheinlich alles getan haben, klicken 'Connect to Firebase'Sie einfach und Sie sind fertig.


3

Es ist eine alte Frage, aber ich bin in letzter Zeit mit Fehler 10 (DEVELOPER_ERROR) festgefahren, weil ich die Android-Client-ID verwendet habe, die ich in der Google-Entwicklerkonsole erstellt habe.

Die Lösung für mich bestand darin, die Android-Anmeldeinformationen in der Google-Entwicklerkonsole nur zu verwenden, um den SHA-Schlüssel meiner apk anzugeben, und die Client-ID der (!) Anmeldeinformationen der Webanwendung von der Google-Entwicklerkonsole in meiner Cordova-Anwendung zu verwenden.

config.xml:

<plugin name="cordova-plugin-googleplus" spec="^5.3.0">
    <variable name="REVERSED_CLIENT_ID" value="com.googleusercontent.apps.[web-application-client-id]" />
    <variable name="WEB_APPLICATION_CLIENT_ID" value="[web-application-client-id].apps.googleusercontent.com" />
</plugin>

Code:

window.plugins.googleplus.login(
    {
       'webClientId': '[web-application-client-id].apps.googleusercontent.com'
    }, 
    ...

Ich benutze keine Feuerbasis.


Vielen Dank, es hat mir viel Zeit gespart. Die Verwendung des automatisch generierten Webs client idlöste das Problem DEVELOPER_ERROR. Obwohl es für mich keinen Sinn macht und es nicht offensichtlich ist, dass eine andere Client-ID verwendet werden sollte.
Myroslav Kolodii

3

Möglicherweise haben Sie einen falschen SHA1-Schlüssel generiert und hinzugefügt. Führen Sie die folgenden Schritte aus, um den SHA1-Schlüssel in Android Studio zu generieren:

  1. Klicken Sie auf Gradle (auf der rechten Seite sehen Sie die Gradle-Leiste)
  2. Klicken Sie auf Aktualisieren (Klicken Sie in der Gradle-Leiste auf Aktualisieren, um Gradle-Skripte Ihres Projekts aufzulisten.)
  3. Klicken Sie auf Ihr Projekt (Formularliste Ihres Projektnamens (root))
  4. Klicken Sie auf Aufgaben
  5. Klicken Sie auf Android
  6. Doppelklicken Sie auf signierenReport (Sie erhalten SHA1 und MD5 in der Ausführungsleiste (manchmal in der Gradle-Konsole))

Fügen Sie nun diesen SHA1-Schlüssel in Ihr Firebase-Android-Projekt ein.



1

Für mich funktionierte es, als ich es zum ersten Mal implementierte, hörte aber nach einigen Tagen der Entwicklung mit der genannten Fehlermeldung auf.

Ich habe das Problem mit den folgenden Schritten gelöst:

  1. Ich habe den sha-256-Fingerabdruck über den sha-1-Fingerabdruck hinzugefügt, den ich bereits in der Firebase-Konsole hatte. (Nicht sicher, ob dieser Schritt erforderlich ist)
  2. Ich habe die Datei google-services.json erneut heruntergeladen und die alte Datei ersetzt.
  3. App neu installiert

und es hat funktioniert


0

Ich bin auf diesen Fehler in meiner Firebase-App gestoßen. Es wurde behoben, als ich den requestIdToken(activity.getString(R.string.default_web_client_id))Teil unten hinzufügte .

GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
        .requestEmail().requestIdToken(activity.getString(R.string.default_web_client_id))
        .build();

    apiClient = new GoogleApiClient.Builder(activity)
        .addConnectionCallbacks(this)
        .enableAutoManage(activity, this)
        .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
        .build();

    Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(apiClient);
    activity.startActivityForResult(signInIntent, RC_GOOGLE_SIGN_IN);

Was ist default_web_client_id? von wo kann ich es bekommen?
Ayman Al-Absi

@ AymanAl-Absi Haben Sie Ihr Projekt für Google Services richtig eingerichtet? Siehe: Entwickler.google.com/android/guides/google-services-plugin
Dan Brough

1
@ AymanAl-Absi Sie erhalten auch die "default_web_client_id" aus Ihrer google-service.json-Datei in dieser Datei. Sie können das Client_ID-Tag in dem Tag sehen, in dem Sie nur diesen Text (client_ID) <[Client_ID] .app.etc> kopieren.
Prinz

0

Ich habe diesen Fehler erhalten, als ich meine JSON-Konfigurationsdatei mit einem neuen Google-Konto aktualisiert habe.

Das manuelle Deinstallieren der Anwendung und das erneute Installieren der App hat bei mir funktioniert.


0

Der Fehler wird verursacht, weil die SHA-1-Prüfsumme des Debug- oder Release-Schlüssels nicht in der Firebase- / Google-Konsole enthalten ist.

Generieren Sie zuerst den Schlüssel mit dem folgenden Befehl:

keytool -list -v -keystore KEYSTORE_PATH -alias ALIAS_NAME

Kopieren Sie dann die SHA-1-Prüfsumme und gehen Sie zu:

Firebase Console> Ihr Projekt> Einstellungen der App> Fingerabdruck hinzufügen



0

Stellen Sie sicher, dass Sie die Google-Anmeldung unter Authentifizierung in der Firebase-Konsole aktivieren.


0

Ich habe mein Problem gelöst, indem ich in dieser Zeile die richtige server_client_id verwendet habe:

String serverClientId = getString(R.string.server_client_id);

Ich habe den falschen Code verwendet.


0

Bei einigen Diensten wie der Google-Anmeldung muss der SHA1-Fingerabdruck zu Ihrer Firebase-Konsole hinzugefügt werden.

Ich habe das Hinzufügen eines SHA-Fingerabdrucks in der Firebase-Konsole verpasst. Gehen Sie dazu zu FireBase Console> Projekteinstellung> Option Fingerabdruck hinzufügen.

Sie können SHA1-Fingerabdrücke auf sehr einfache Weise generieren: https://www.youtube.com/watch?v=FczARQ244GE

Danach habe ich noch einen Fehler gemacht

Nach der Generierung des SHA1-Schlüssels aus der obigen Methode. Ich habe den falschen ungültigen SHA1-Schlüssel kopiert, der abgelaufen ist. Stellen Sie daher sicher, dass der SHA1-Schlüssel, den Sie von der obigen Ausgabe kopieren, gültig ist (überprüfen Sie auch den gültigen Wert bis zum SHA1-Schlüssel).

Stellen Sie außerdem sicher, dass der Paketname (xyz), den Sie in firebase hinzugefügt haben, mit dem in Ihrem Android-Code verwendeten übereinstimmt.

Stellen Sie außerdem sicher, dass Sie die richtige AppID verwenden


0

Nach langer Untersuchung habe ich eine Lösung gefunden. Tatsächlich Error: Status{statusCode=DEVELOPER_ERROR, resolution=null}deutet dieser Fehler auf einen falschen SHA-1 ODER einen falschen Paketnamen ODER etwas anderes hin. In meinem Fall füge ich debugam Ende meines Paketnamens ein Schlüsselwort hinzu com.sample.app=>com.sample.app.debug

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.