In einer meiner Apps muss ich Daten von Facebook erhalten ... Ich mache das:
Ich habe eine App-ID erstellt . Es meldet sich erfolgreich an, aber nach dem Abmelden melde ich mich an und dann bekomme ich:
Was ist falsch ich mache? Ich verwende das Facebook SDK ... Ich habe Facebook auf meinem Handy installiert ... Es läuft gut in einem Emulator, aber auf dem ist die eingebaute Facebook-Anwendung nicht installiert.
Das ist mein Code:
if (FB_APP_ID == null) {
Builder alertBuilder = new Builder(this);
alertBuilder.setTitle("Warning");
alertBuilder.setMessage("A Facebook Applicaton ID must be " +
"specified before running this example: see App.java");
alertBuilder.create().show();
}
// Initialize the dispatcher
Dispatcher dispatcher = new Dispatcher(this);
dispatcher.addHandler("login", LoginHandler.class);
dispatcher.addHandler("stream", StreamHandler.class);
dispatcher.addHandler("logout", LogoutHandler.class);
// If a session already exists, render the stream page
// immediately. Otherwise, render the login page.
Session session = Session.restore(this);
if (session != null) {
dispatcher.runHandler("stream");
}
else {
dispatcher.runHandler("login");
}
Antworten:
Der generierte Hash-Schlüssel ist falsch. Sie können den Hash-Schlüssel in zwei Schritten erhalten.
Einer ist über eine Eingabeaufforderung. Ein anderer ist durch Codierung. Der Hash-Schlüssel über eine Eingabeaufforderung funktioniert nur beim ersten Mal. Ich kenne den Grund nicht. Ich habe auch das gleiche Problem. Also habe ich es programmatisch ausprobiert.
Folge diesen Schritten:
Fügen Sie den folgenden Code ein
oncreate()
.Ändern Sie "com.example.packagename" mit Ihrem Paketnamen in der obigen Codierung (Sie finden Ihren Paketnamen möglicherweise in der Android-Manifestdatei).
Führen Sie Ihre Anwendung aus. Gehen Sie zu der Aktivität, in die Sie den obigen Code eingefügt haben. Suchen Sie in der LogCat-Datei nach "KeyHash". Möglicherweise finden Sie einen Schlüssel-Hash. Kopieren Sie den Schlüssel-Hash und rufen Sie die Dashboard-Seite der Facebook-Anwendung auf. Gehen Sie zu den Einstellungen und geben Sie die Details wie im folgenden Bild ein.
Wenn Sie den obigen Schritt abgeschlossen haben, starten Sie die App erneut. Sie können sich jetzt bei Facebook anmelden. Weitere Informationen zum Schlüssel-Hash finden Sie unter dem Link .
Wenn Sie auf der Einstellungsseite falsche Informationen hinzufügen, bedeutet dies, dass ein Fehler auftritt. Verwenden Sie dort also die richtigen Informationen. Und auch wenn die Öffentlichkeit (außer Ihnen) Ihre Anwendung verwenden muss, müssen Sie die Berechtigung aktivieren (ändern Sie "Ja" in "Status & Überprüfung" neben der Einstellung) .
quelle
Wenn Sie die Google Play App-Signatur verwenden:
Öffnen Sie den App-Signaturbereich in der Google Play Console und rufen Sie den SHA-1-Hash unter App-Signaturzertifikat ab . Konvertieren Sie es dann in Base64 , zum Beispiel mit diesem Tool: Hexadezimal -> base64 String-Decoder
quelle
echo YOUR_SHA1_CERTIFICATE_COPIED_FROM_GOOGLE_PLAY | sed s/\://g | xxd -r -p | base64
Wenn Sie mit diesem Problem konfrontiert sind, geben Sie diesen Schlüssel in Ihrem developer.facebook.com ein :
Stellen Sie dann sicher, dass Ihre App auf developer.facebook.com live ist .
Dieser grüne Kreis zeigt an, dass die App live ist:
Wenn dies nicht der Fall ist, führen Sie die folgenden zwei Schritte aus, um Ihre App live zu schalten:
Schritt 1 Gehen Sie zu Ihrer Anwendung → Einstellung → Kontakt-E-Mail hinzufügen und wenden Sie Änderungen speichern an.
Schritt 2 Gehen Sie zur Option App Review und stellen Sie sicher, dass diese Option Ja ist . Ich habe einen Screenshot hinzugefügt:
Hinweis: Wenn Sie den Hashkey kopieren möchten, überprüfen Sie die BlueServiceQueue in LogCat .
quelle
BlueServiceQueue
in LogcatIch habe das gleiche Problem. Ich war mir sicher, dass es an einem sehr kleinen Fehler lag und ja, das war es!
Ich habe die Lösung gefunden:
Beim Generieren des Debug- Hash-Schlüssels in meinem Computer habe ich das Kennwort meines Systems eingegeben. Das Passwort sollte jedoch wie folgt lauten:
Geben Sie das Keystore-Passwort ein: "android". Dies war das einzige Problem in meinem Fall.
----- Verwenden Sie zum Generieren des Debug- Schlüssel-Hash diesen Befehl -
Geben Sie das Keystore-Passwort ein: 'android'
----- Verwenden Sie diesen Befehl, um einen Release- Schlüssel-Hash zu generieren. -
Geben Sie nach Ausführung dieses Befehls Ihr Schlüsselspeicherkennwort ein.
quelle
Ich hatte das gleiche Problem. Ich habe kurz nach den möglichen Gründen für dieses seltsame Verhalten gesucht und Folgendes festgestellt:
Während der ersten Ausführung einer neuen Facebook-App wird die Verbindung / Anmeldung auch dann ermöglicht , wenn Sie keine Schlüssel-Hashes angeben.
Für mich hat das von Facebook bereitgestellte Tutorial nicht den richtigen Schlüssel-Hash generiert, da es die falsche Konfiguration ergab . Bei der Ausführung:
Stellen Sie sicher, dass Sie alle Eigenschaften überprüfen - das
HOMEPATH
, das Vorhandensein des Schlüsselspeichers usw. Möglicherweise müssen Sie auch ein Kennwort angeben.Was die richtige Konfiguration erzeugte, war die von @Mahendran vorgeschlagene Lösung .
Wenn Sie den ursprünglich veröffentlichten Fehler sehen ( http://i.stack.imgur.com/58q3v.png ), ist der Schlüssel-Hash, den Sie auf dem Bildschirm sehen , höchstwahrscheinlich Ihr echter. Wenn nichts anderes funktioniert, geben Sie es in Facebook ein.
Ich habe all diese Ergebnisse erhalten mit: Windows 7 64-Bit-Edition, Android Studio 1.2.2, JDK 7.
quelle
Laut Facebook Login für Android müssen Sie den Schlüssel-Hash-Wert angeben. Um es zu erhalten, benötigen Sie den Schlüssel , mit dem Sie Ihre Bewerbung signieren.
quelle
Sie müssen zwei Schlüssel-Hashes erstellen, einen für Debug und einen für Release.
Für den Debug- Schlüssel-Hash:
Führen Sie unter OS X Folgendes aus:
Führen Sie unter Windows Folgendes aus:
Debug-Key-Hashes-Quelle
Für den Release- Schlüssel-Hash:
Führen Sie unter OS X Folgendes aus (ersetzen Sie die dazwischen liegenden
<>
Werte durch Ihre Werte) :Verwenden Sie unter Windows (ersetzen Sie das, was dazwischen liegt,
<>
durch Ihre Werte) :Geben Sie die Quelle der Schlüssel-Hashes frei
quelle
Ich habe alle vorherigen Antworten ausprobiert und nichts hat meinem Fall bei meinen Kunden geholfen!
Dann erinnerte sich mein Kunde, dass er die Facebook-App auf seinem Gerät installiert hatte. Nachdem er es entfernt hat. Das Login hat perfekt funktioniert.
Der Hashkey wurde geändert und ich habe die alten Hash-Schlüssel in der Facebook Developers Console durch den Schlüssel aus dem Fehler (wie oben vorgeschlagen) ersetzt, und es funktioniert!
Die Facebook-App selbst könnte das Problem sein. Sie sollten dies also besser auf einem Gerät mit installierter Facebook-App und auf einem Gerät mit nicht installierter Facebook-App herausfinden und beide Fälle behandeln ...
quelle
So habe ich dieses Problem gelöst:
Zuerst müssen Sie den SHA-1-Wert erhalten. Dafür gibt es zwei Möglichkeiten.
Um den SHA-1-Wert in Android Studio zu erhalten.
ODER
Abrufen des SHA-1-Werts aus der Keystore- Datei.
Kopieren Sie den SHA-1- Wert folgendermaßen in Ihre Zwischenablage:
Öffnen Sie den Hexadezimal -> Base64-Stringdecoder , um Ihren SHA-1-Wert in Base64 zu konvertieren.
Dies ist, was Facebook benötigt.
Holen Sie sich den generierten Hash "******************** =" und kopieren Sie den Schlüssel-Hash in die Facebook-App.
quelle
Ich hatte das gleiche Problem. Melden Sie sich zuerst an, ganz gut, aber dann ein ungültiger Schlüssel-Hash.
Das Facebook SDK für Unity erhält den falschen Schlüssel-Hash. Es erhält den Schlüssel von "C: \ Users \" your user ".android \ debug.keystore" und sollte in einer perfekten Welt von dem Keystore stammen, den Sie in Ihrem Projekt erstellt haben. Aus diesem Grund wird Ihnen mitgeteilt, dass der Schlüssel-Hash nicht registriert ist.
Wie von Madi vorgeschlagen , können Sie den Schritten unter diesem Link folgen , um den richtigen Schlüssel zu finden. Stellen Sie einfach sicher, dass Sie sie auf den Schlüsselspeicher in Ihrem Projekt verweisen. Andernfalls erhalten Sie nicht den richtigen Schlüssel.
quelle
Der folgende Code gibt Ihnen Ihren Hash für Facebook, aber Sie müssen diese Schritte ausführen, um den Release Candidate-Hash zu erhalten.
Kopieren Sie diesen Code und fügen Sie ihn in Ihre Hauptaktivität ein
Generieren Sie eine signierte APK- Datei.
https://developers.facebook.com/apps
. Es ist unter Einstellungen.quelle
Nach langer Recherche haben wir eine Lösung gefunden.
Wir hatten Berechtigungen festgelegt als:
Dies funktionierte zum ersten Mal, aber als wir uns erneut bei Facebook anmeldeten, gab es den ungültigen Hash-Fehler .
Die einfache Lösung bestand darin, die obige Zeile zu ändern in:
Und es hat wie eine Glückseligkeit funktioniert!
Facebook sollte die richtige Ausnahme anstelle des irreführenden ungültigen Hash-Schlüsselfehlers zurückgeben.
quelle
Nach so vielen Versuchen bin ich auf eine Lösung gestoßen. Ich habe sowohl Debug- als auch Release-Schlüssel generiert und zur Facebook-Entwicklerkonsole hinzugefügt und trotzdem den Fehler erhalten.
Die einzige Lösung, die für mich funktioniert hat, war, das OpenSSL-Programm von Google zu deinstallieren und von Win32 / Win64 OpenSSL Installer für Windows herunterzuladen
Es funktioniert wirklich wie Magie.
quelle
Obwohl diese Frage auf viele hilfreiche Arten beantwortet wurde, wollte ich nur hinzufügen, dass ich, als ich der Antwort von Rafal Maleks folgte (mithilfe der Hash-Tasten in der Google Play Console) , den SHA1-Schlüssel für die App- Signierung NICHT verwenden konnte und trotzdem die generische Version erhielt Fehler von Facebook. Stattdessen musste ich den Fingerabdruck des SHA-1-Zertifikats aus dem Teil " Zertifikat hochladen" verwenden (direkt unter dem Teil "App-Signierung" in der Google Play Console). Gleicher Prozess sonst;
Kopieren Sie den Fingerabdruck des SHA-1-Zertifikats aus dem Abschnitt " Zertifikat hochladen " in der Google Play Console
Konvertieren Sie den SHA-1 mit: http://tomeko.net/online_tools/hex_to_base64.php und kopieren Sie die Ausgabe (base64)
Fügen Sie es in die Eingabe von Key Hashes auf developer.facebook.com ein und speichern Sie die Änderungen.
Hoffentlich ist diese Antwort nicht zu redundant und hilft jemandem, der sie nicht mit dem App Signing-Zertifikat zum Laufen bringen kann.
Jetzt funktioniert die Facebook-Anmeldung in meiner App sowohl im Debug- als auch im Release-Modus.
quelle
Fügen Sie den folgenden Code in Ihre OnCreate-Methode ein:
Ändern Sie einfach den Paketnamen. Gehen Sie dann zu Ihrer LogCat-Datei und wählen Sie hier Debug-Suche. Dann finden Sie den Hash-Schlüssel. Kopieren Sie nun diesen Hash-Schlüssel und rufen Sie die Website developer.facebook.app_id auf, bearbeiten Sie Ihren Hash-Schlüssel und drücken Sie Save. Führen Sie nun Ihr Android-Projekt erneut aus. Ich denke, das Problem wird gelöst.
quelle
Dies kann jemandem mit dem gleichen Problem helfen.
Generieren Sie den Schlüssel-Hash mit dem folgenden Code
Verwendung von Keytool
Fügen Sie es in das gewünschte Feld im Facebook-Entwickler ein
In Android Studio das Menü Datei → Projektstruktur
Signaturparameter hinzufügen.
Wählen Sie Aromen
Wählen Sie die von uns erstellte Signaturkonfiguration aus.
Build-Typ auswählen
Wählen Sie die Build-Variante und erstellen Sie sie
quelle
Ich hatte das gleiche Problem beim Debuggen meiner App. Ich habe den Hash, den Sie im angehängten Bild durchgestrichen haben (der von Facebook als ungültig bezeichnet wird), neu geschrieben und in der Entwicklerkonsole von Facebook zu wichtigen Hashes hinzugefügt. Pass nur auf Tippfehler auf.
Diese Lösung ist eher eine einfache Problemumgehung als eine richtige Lösung.
quelle
Wenn Sie den Keyhash manuell eingeben (z. B. vom Handy zum Facebook-Dashboard), müssen Sie zwischen kleinem L und Großbuchstaben I unterscheiden.
quelle
quelle
Was Facebook verwendet, ist nicht das Standardkennwort und der Alias für das Debuggen. Sie müssen es im Folgenden ändern und es wird funktionieren.
Wenn Sie nichts mit dem Standardkennwort geändert haben, sollte es "android" sein .
Sie können es auch in der Datei build.gradle konfigurieren. Für die Generierung des Hashs sollte jedoch dasselbe Alias-Passwort verwendet werden:
quelle
Hier sind viele richtige Antworten. Nur eine Sache:
Fügen Sie den empfangenen Hash in Anwendung → Einstellungen → Haupt ein , nicht über das Schnellstart-Tutorial.
quelle
Ich hatte das gleiche Problem.
Stellen Sie sicher, dass Sie die APK-Datei mit demselben Gerät erstellen, auf dem der Hashkey generiert wurde, der im Bereich für Facebook-Entwickler gespeichert ist.
quelle
Ich habe dies behoben, indem ich Folgendes hinzugefügt habe
MainApplication.onCreate
:Ich habe dies dann auf die Google-Entwicklerkonsole hochgeladen und dann die abgeleitete APK heruntergeladen , die aus irgendeinem Grund einen völlig anderen Schlüssel-Hash hat.
Ich habe dann LogCat verwendet, um den neuen Schlüssel-Hash zu ermitteln, und ihn Facebook hinzugefügt, wie andere Benutzer beschrieben haben.
quelle
Wenn Sie Release-Key-Hashes generieren, stellen Sie sicher, dass Sie das tatsächliche Kennwort Ihres Keystores eingeben und nicht "android".
Das war mein Problem. Die Debug-Version funktionierte, die APK-Version jedoch nicht.
quelle
Verwenden Sie den folgenden Code in der onCreate () -Methode Ihrer Aktivität:
Führen Sie diesen Code aus. Dadurch wird der Hash-Schlüssel generiert. Kopieren Sie diesen KeyHash in die Facebook-Anwendungseinstellung und speichern Sie die Änderungen. Dann melden Sie sich bei Ihrer Anwendung an. Dies wird auch in Zukunft perfekt funktionieren.
quelle