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.

Gurvinder Singh
quelle
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.

SolArabehety
quelle
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

Mario
quelle
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.

Udit Kapahi
quelle
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 .

4127157
quelle
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.

Renegat
quelle
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.

Renan Aguiar
quelle
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.

tobik
quelle
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.

Sanjay Sharma
quelle
3

Bitte legen Sie die richtige JSON-Datei im Stammverzeichnis des Android-Projekts ab
. Weitere Informationen finden Sie hier: https://coderzpassion.com/android-working-latest-google-plus-login-api/

Jagjit Singh
quelle
Ist es obligatorisch, diesen json hinzuzufügen, auf den wir früher verzichten?
Gurvinder Singh
Ich habe die richtige Datei mit der richtigen Konfiguration abgelegt, es liegt immer noch ein Fehler vor
Bibaswann Bandyopadhyay
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

Mantoska
quelle
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);
Dan Brough
quelle
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.

sanath_p
quelle
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

Nabin Bhandari
quelle
0

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

hellowill89
quelle
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.

Der MJ
quelle
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

user2694064
quelle
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

Albert
quelle