web-dev-qa-db-de.com

Der Hashwert stimmt nicht mit dem Facebook-Login in Android überein

Meine App verwendet ein einfaches Facebook-Login. Ich habe den Keyhash in mein App-Dashboard eingegeben, key_hash-Bereich, und ich konnte mich erfolgreich anmelden. Jetzt habe ich die App veröffentlicht und habe versucht, mich anzumelden, aber auf einem Webview wird eine Fehlermeldung angezeigt, die dies angibt 

"Invalid Android_key parameter. The key rX6qeRitkFCWui3de74rxB_qc1s does not match any allowed key. Configure your app key hashes at http://developers.facebook.com/apps/<my_fb_app_id>". 

Eigentlich ist RX6qeRitkFCWui3de74rxB_qc1s nicht mein Schlüsselhash, den ich in der nativen App habe. Woher kommt es? Jedenfalls habe ich diesen Keyhash auch in der nativen App eingegeben, erhielt aber die gleiche Fehlermeldung und konnte mich immer noch nicht anmelden. Wohin geh ich falsch? Bitte hilf mir. 

16
Santhosh

Sie können einen Hash-Schlüssel durch Codierung generieren, Sie tun einfach eine Sache. Fügen Sie diesen Code in die Hauptklasse (erste Klasse) ein, führen Sie die App aus und überprüfen Sie das Protokoll, in dem Sie den Hash-Schlüssel finden. 

Ersetzen Sie noch einmal diesen Paketnamen "com.example.creeper" durch Ihren Paketnamen: 

try{
        PackageInfo info = getPackageManager().getPackageInfo(
                "com.example.creeper", 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) {

}
26
Rishi Gautam

Wenn Sie mit diesem Problem konfrontiert sind, geben Sie diesen Schlüssel in Ihre developer.facebook.com

 enter image description here

Stellen Sie dann sicher, dass Ihre App live auf developer.facebook.com ist. 

Dieser grüne Kreis zeigt an, dass die App live ist  enter image description here

Wenn dies nicht der Fall ist, befolgen Sie diese beiden Schritte, um Ihre App live zu machen 

Schritt 1 Gehen Sie zu Ihrer Anwendung -> Einstellung, fügen Sie Kontakt-E-Mail hinzu und übernehmen Sie die Änderungen speichern

Setp 2 Gehen Sie dann zu Status & Review und stellen Sie sicher, dass diese Option Ja ist. Ich habe einen Screenshot hinzugefügt

 enter image description here

11
Arpit Patel

Generieren Sie einen neuen Keyhash mit der Keystore-Datei Ihrer App, die zum Signieren der veröffentlichten App verwendet wird .. Dieses Problem kann durch die Angabe des von Ihrem Debug-Keystore generierten Keyhash verursacht werden, der nur mit unsignierten APK-Dateien funktioniert des folgenden Links, um zu verstehen, wie Sie einen keyhash erstellen https://developers.facebook.com/docs/getting-started/facebook-sdk-for-Android/3.0/

und aktualisieren Sie das gleiche mit der App-Einstellungsseite von Facebook.

Überprüfen Sie auch, ob der Paketname und der Klassenname korrekt sind.

5
Mahesh

Die Verwendung des Debug-Schlüsselspeichers, einschließlich Android debug.keystore im .Android-Ordner, erzeugte ein seltsames Problem. Der Login mit dem Facebook-Login-Button in der Android-App würde zum ersten Mal wie gewünscht passieren. Wenn ich mich jedoch abgemeldet habe und versucht habe, sich anzumelden, wird ein Fehler ausgegeben: Diese App hat keine Android-Schlüsselhashes konfiguriert. Bitte gehen Sie zu http: // .... 

Erstellen eines Keystores mit dem Befehl keytool (keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -sigalg SHA1withRSA -keysize 2048 -validity 10000) und Einfügen dieses Keystores in den obersten übergeordneten Ordner meiner Projekte Der folgende Eintrag in der Datei build.gradle des Projekts hat das Problem gelöst:

 signingConfigs {
        release {
            storeFile file("my-release-key.keystore")
            storePassword "passpass"
            keyAlias "alias_name"
            keyPassword "passpass"
        }    }

Bitte beachten Sie, dass Sie in onCreate () Ihrer Android-Aktivität immer die folgende Methode verwenden, um den Hashwert des Schlüssels abzurufen (um sich auf der Website developer.facebook.com Ihrer App zu registrieren), anstatt die Befehlszeile (keytool -exportcert -alias -keystore) zu verwenden | openssl sha1 -binary | openssl base64) zum Generieren eines Hashwerts als Befehlszeile in einigen Fällen kann ein falscher Schlüssel-Hash ausgegeben werden:

    public  void showHashKey(Context context) {
        try {
            PackageInfo info = context.getPackageManager().getPackageInfo("com.superreceptionist",
                    PackageManager.GET_SIGNATURES);
            for (Android.content.pm.Signature signature : info.signatures) {
                MessageDigest md = MessageDigest.getInstance("SHA");
                md.update(signature.toByteArray());

                 String sign=Base64.encodeToString(md.digest(), Base64.DEFAULT);
                Log.e("KeyHash:", sign);
                //  Toast.makeText(getApplicationContext(),sign,     Toast.LENGTH_LONG).show();
            }
            Log.d("KeyHash:", "****------------***");
        } catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
        } catch (NoSuchAlgorithmException e) {
e.printStackTrace();
        }
    }
3
Sandeep.R

Sie müssen einen Keyhash von Ihrem debug.keystore oder, wenn Sie ihn mit einem Freigabeschlüssel signiert haben, als mit diesem . Das hat Auswirkungen auf Ihren Keyhash.

Schauen Sie sich das an: Wie erstelle ich einen Facebook-Hash-Hash?

2
Luser_k

Der in dem Fehler bereitgestellte Schlüssel lautet beispielsweise "rX6qeRitkFCWui3de74rxB_qc1s". Anschließend wird die Liste des Hashcodes in Facebook angezeigt. Sie versuchen, diesen Code am Ende des Endes "=" abzulegen und rX6qeRitkFCWui3de74rxB_qc1s= zu erhalten.

2
Fernanda Leite

Versuchen Sie, einen neuen Schlüsselhash zu generieren und in Facebook-Entwicklern zu bearbeiten, und registrieren Sie die App erneut mit dem neuen Schlüsselhash.

1
anddevmanu

Hier ist die C # -Version für alle, die versuchen, die Xamarin-Probe zum Laufen zu bringen.

    public  void showHashKey(Context context) 
    {
        try {
            PackageInfo info = context.PackageManager.GetPackageInfo("com.facebook.samples.hellofacebook", PackageInfoFlags.Signatures);
            foreach (Android.Content.PM.Signature signature in info.Signatures) {
                MessageDigest md = MessageDigest.GetInstance("SHA");
                md.Update(signature.ToByteArray());

                var sign = Base64.EncodeToString(md.Digest(), Base64Flags.Default);
                Log.Info("KeyHash:", sign);
            }
            Log..Info("KeyHash:", "****------------***");
        } catch (PackageManager.NameNotFoundException e) {
            e.PrintStackTrace();
        } catch (NoSuchAlgorithmException e) {
            e.PrintStackTrace();
        }
    }
1
BenBtg

Wenn ich den Befehl keytool ausführte und mich zur Eingabe eines Kennworts aufforderte, interpretierte ich dies für mich so, dass ich ein Kennwort für den Hash auswählen muss. In der Tat müssen Sie sie dem Schlüsselspeicher (dem Ort, an dem der Hash aufbewahrt wird) übergeben. Lustig ist (nicht lustig, "ha ha"), es akzeptiert jedes Passwort und gibt einen Hash für Sie aus. Das hat dazu geführt, dass mein Hash nicht übereinstimmt. Glücklicherweise hatte ich mein Passwort vor langer Zeit im OS X-Schlüsselbund gespeichert, also habe ich herausgefunden, was es wirklich ist. Ich habe das richtige Passwort ausprobiert und einen anderen Hash bekommen, der funktioniert hat. Beachten Sie, dass das Standardkennwort für den Keystore Android lautet. Versuchen Sie es also. Möglicherweise fehlt es Ihnen.

Ich denke wirklich, ein falsches Passwort sollte Sie eher ablehnen als einen Hash auszugeben. Ich frage mich, ob es sich hierbei um einen Fehler handelt. Falls dies der Fall ist, hinterlassen Sie in den Kommentaren einen Link für einen Fehlerbericht.

0
ABCD.ca