it-swarm.com.de

Das Android Facebook SDK 3.0 gibt während der Anmeldung "remote_app_id stimmt nicht mit der gespeicherten ID überein"

Ich versuche, eine App zu erstellen, die das Facebook SDK für Android 3.0 verwendet. Aber wenn ich versuche anzurufen

Session.openActiveSession

Es gibt mir einfach einen SessionState mit CLOSED_LOGIN_FAILED und LogCat ist:

12-16 00:03:40.510: W/fb4a:fb:OrcaServiceQueue(4105): com.facebook.orca.protocol.base.ApiException: remote_app_id does not match stored id 

Ich habe StackOverflow mit "remote_app_id" gesucht und die Ergebnisse sind die "Bundle ID" in iOS, aber ich weiß nicht, was "remote_app_id" in Android bedeutet. Ich habe den Paketnamen und den Aktivitätsnamen bereits in meinen Facebook-App-Einstellungen festgelegt. Ich habe keine Ahnung vom Grund des Fehlers.

43
David Fang

Ich habe diese Frage gelöst. Das Problem ist, dass der "Key Hash", den ich mit "keytool" generiert habe, falsch war. Wenn das "keytool" zur Eingabe eines Kennworts auffordert, müssen Sie dafür "Android" (ohne Anführungszeichen) verwenden. Ich habe stattdessen mein eigenes Passwort verwendet. Als ich mein Passwort geändert habe, ist das Problem einfach weggeflogen. Hoffe das hilft.

34
David Fang

Ein weiterer möglicher Fehler (der bei mir aufgetreten ist): Ein "Key Hash" in der Facebook App Console einrichten und die Android App mit einem anderen Keystore signieren.

Leider liegt dies daran, dass Facebook Erste Schritte diesen Fehler auslöst. Es besagt, dass Android-Entwickler in Ihren Beispielen den Standard-Android-Debug-Schlüssel verwenden sollten, und erklärt nicht, dass der Schlüssel-Hash mit demselben Schlüsselspeicher generiert werden sollte, mit dem Sie Ihre Anwendung signieren.

Meine Empfehlung ist, zwei Key Hashes an Ihrer Facebook-Konsole einzurichten:

  1. standard-Android-Debug-Schlüssel: 

keytool -exportcert -alias androiddebugkey -keystore ~ ​​/ .Android/debug.keystore | openssl sha1 -binary | openssl base64

  1. ihren Anwendungsfreigabeschlüssel: 

keytool -exportcert -alias yourappreleasekeyalias -keystore ~ ​​/ .your/path/release.keystore | openssl sha1 -binary | openssl base64

Denken Sie daran: Sie können keine Anwendung veröffentlichen, die mit dem von den SDK-Tools generierten Debug-Schlüssel signiert ist. Daher ist es nicht möglich, eine App nur mit dem Hash-Schlüssel zu veröffentlichen, der mit der ersten vorherigen Befehlszeile generiert wurde (wie das Facebook-Tutorial vorschlägt).

Weitere Informationen zum Signieren Ihrer Bewerbung finden Sie unter Signieren Ihrer Bewerbung .

77
JPMagalhaes

Eine andere Möglichkeit besteht darin, den an Facebook gesendeten Schlüssel-Hash auszudrucken und diesen Wert zu verwenden.

Nehmen Sie die folgenden Änderungen an der onCreate()-Methode in Ihrer Hauptaktivität vor:

try {
    PackageInfo info = getPackageManager().getPackageInfo(
          "com.facebook.samples.loginhowto", PackageManager.GET_SIGNATURES);
    for (Signature signature : info.signatures){
           MessageDigest md = MessageDigest.getInstance("SHA");
           md.update(signature.toByteArray());
           Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
    }
} catch (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}

Ersetzen Sie com.facebook.samples.loginhowto durch your own package name.

Das hat für mich funktioniert!

61
TacoEater

Ich wurde durch falsches openssl gefangen, das einen falschen Hash-Schlüssel generiert hat. Ich benutzte openssl von http://gnuwin32.sourceforge.net/packages/openssl.htm , das das Problem gelöst hat.

5
user1892751

Ich hatte das gleiche Problem und stellte fest, dass das openssl das falsche sha1 . Erstellt hatte, ein neues heruntergeladen und es funktionierte wie ein Zauber.

4
TacoEater

Sie erhalten den Hash-Schlüssel mit dem Debug-Schlüssel ... Was möglicherweise funktioniert, wenn Sie das Paket nicht signieren und die App im Debug-Modus ausführen. Was Sie tun müssen, ist:

1) Wechseln Sie zur Manifestdatei und fügen Sie der Anwendung Android: debuggable = "true" hinzu.

2) Führen Sie nun Ihre App aus und überwachen Sie den Logcat.

3) Sie erhalten einen neuen Schlüssel, der mit x9SLcMXBlgly1f36PJuuc4a3YAc der passende Schlüssel sein wird. Der Schlüssel, den Sie jetzt haben, ist jetzt mit einem = -Zeichen versehen.

4) Registrieren Sie diesen Schlüssel auf der Facbook-Entwicklerseite

Alternativer Trick

Sie können noch etwas tun. Registrieren Sie diesen Schlüssel einfach auf der Facebook-Entwicklerseite x9SLcMXBlgly1f36PJuuc4a3YAc =

Fügen Sie einfach = zum Schlüssel hinzu, der von der Facebook-App angezeigt wird.

du bist fertig!! Hoffe das wird funktionieren.

0
ashutiwari4

Stellen Sie außerdem sicher, dass Sie den Hash an der richtigen Stelle im Facebook-Dev-Portal eingeben. Bearbeiten Sie die Anwendungseinstellungen und wählen Sie Native Android App aus.

Ich hatte den Hash stattdessen versehentlich in den 'Sample App Settings' eingegeben.

0
zyked