web-dev-qa-db-de.com

So erstellen Sie Android Facebook Key Hash

Ich verstehe diesen Prozess überhaupt nicht. Ich konnte zu dem Ordner navigieren, der das Keytool im Java SDK enthält. Obwohl ich den Fehler bekomme, wird openssl nicht als interner oder externer Befehl erkannt. Das Problem ist auch, wenn ich es schaffen kann, was würde ich tun und mit was danach?

142
Somk

Hier ist was Sie tun müssen -

Laden Sie openSSl von Code .__ herunter. Extrahieren Sie es. Erstellen Sie einen Ordner - OpenSSL in C:/und kopieren Sie den extrahierten Code hier.

debug.keystore-Dateipfad erkennen. Wenn Sie nicht gefunden haben, führen Sie eine Suche in C:/aus und verwenden Sie im nächsten Schritt den Befehl Pfad.

ermitteln Sie den Pfad der keytool.exe und wechseln Sie zu diesem Befehl in/Eingabeaufforderung. Führen Sie diesen Befehl in einer Zeile aus.

$ keytool -exportcert -alias androiddebugkey -keystore "C:\Documents and Settings\Administrator.Android\debug.keystore" | "C:\OpenSSL\bin\openssl" sha1 -binary |"C:\OpenSSL\bin\openssl" base64

es wird nach einem Passwort gefragt, setzen Sie Android Das ist alles. Sie erhalten einen Schlüsselhash

190

Für Linux und Mac

Offenes Terminal: 

Für Debug Build

keytool -exportcert -alias androiddebugkey -keystore debug.keystore | openssl sha1 -binary | openssl base64

Sie finden debug.keystore im Ordner ".Android". Kopieren Sie es und fügen Sie es auf den Desktop ein, und führen Sie den obigen Befehl aus.

Für Release Build

keytool -exportcert -alias <aliasName> -keystore <keystoreFilePath> | openssl sha1 -binary | openssl base64

HINWEIS: Vergewissern Sie sich, dass in beiden Fällen nach einem Kennwort gefragt wird. Wenn Sie nicht nach einem Kennwort gefragt werden, bedeutet dies, dass der Befehl fehlerhaft ist. Das Kennwort für debug.keystore ist "Android". Zur Freigabe müssen Sie das Kennwort eingeben, das Sie beim Erstellen des Keystores gesetzt haben.

130
Biraj Zalavadia

Bitte versuchen Sie das:

public static void printHashKey(Context pContext) {
        try {
            PackageInfo info = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES);
            for (Signature signature : info.signatures) {
                MessageDigest md = MessageDigest.getInstance("SHA");
                md.update(signature.toByteArray());
                String hashKey = new String(Base64.encode(md.digest(), 0));
                Log.i(TAG, "printHashKey() Hash Key: " + hashKey);
            }
        } catch (NoSuchAlgorithmException e) {
            Log.e(TAG, "printHashKey()", e);
        } catch (Exception e) {
            Log.e(TAG, "printHashKey()", e);
        }
    }
68
Maddy

OpenSSL: Sie müssen das installieren, wenn es nicht mit Ihrem Betriebssystem vorinstalliert ist (beispielsweise hat Windows es nicht vorinstalliert). Wie das zu installieren ist, hängt von Ihrem Betriebssystem ab (für Windows das link von coder_For_Life22). 

Der einfachste Weg ohne Fummeln ist das Kopieren der Datei openssl.exe in Ihren Keytool-Pfad, wenn Sie unter Windows arbeiten. Wenn Sie das nicht möchten, müssen Sie es Ihrer Umgebungsvariablen PATH hinzufügen. Führen Sie dann den in den Dokumenten enthaltenen Befehl aus.

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

Beachten Sie, dass das Argument nach -keystore auf Ihren Debug-Keystore verweist. Dieser Speicherort hängt auch von Ihrem Betriebssystem ab. Sollte sich an einem der folgenden Orte befinden:

  • Windows Vista oder 7 - C:\Benutzer\.Android\debug.keystore
  • Windows XP - C:\Dokumente und Einstellungen\.Android\debug.keystore
  • OS X und Linux - ~/.Android/debug.keystore

Wenn Sie alles richtig gemacht haben, sollten Sie zur Eingabe eines Kennworts aufgefordert werden. Das ist Android für das Debug-Zertifikat. Wenn das Passwort korrekt ist, gibt die Konsole einen Hash aus (etwas zufällige Zeichen und Zahlen). 

Nehmen Sie das und kopieren Sie es in das Android key hash-Feld in den Einstellungen Ihrer App auf Facebook. Um dorthin zu gelangen, gehen Sie zu Developers.facebook.com/apps , wählen Sie Ihre App aus, gehen Sie zu Edit settings und scrollen Sie nach unten. Warten Sie danach einige Minuten, bis die Änderungen wirksam werden.

45
user658042

um Ihren Schlüssel-Hash auf Ihrem lokalen Computer zu generieren, führen Sie das Java-Hilfsprogramm keytool (das sich im Pfad Ihrer Konsole befindet) mit dem Android-Debug-Keystore aus. Dies ist standardmäßig in Ihrem Home-Verzeichnis .Android). Führen Sie unter OS X Folgendes aus:

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

Verwenden Sie unter Windows: -

keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.Android\debug.keystore | openssl sha1 -binary | openssl base64

hoffe das wird dir helfen

Ref - Entwickler-Facebook-Site

21
Rakesh

Es gibt auch eine kurze Lösung. Führen Sie dies einfach in Ihrer App aus: 

FacebookSdk.sdkInitialize(getApplicationContext());
Log.d("AppLog", "key:" + FacebookSdk.getApplicationSignature(this));

Eine längere, die kein FB SDK benötigt (basierend auf einer Lösung hier ):

public static void printHashKey(Context context) {
    try {
        final PackageInfo info = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES);
        for (Android.content.pm.Signature signature : info.signatures) {
            final MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            final String hashKey = new String(Base64.encode(md.digest(), 0));
            Log.i("AppLog", "key:" + hashKey + "=");
        }
    } catch (Exception e) {
        Log.e("AppLog", "error:", e);
    }
}

Das Ergebnis sollte mit "=" enden.

12

Für jemanden wie mich gibt es hier vollständige Angaben (für Windows)

1. Download OpenSSl entweder 3. oder 4. (mit e wird besser funktionieren), basierend auf Ihrem 32-Bit- oder 64-Bit-System.

2. Entpacke die heruntergeladene Zip-Datei in das C-Verzeichnis 

3. Öffne den entpackten Ordner bis zur Bin und kopiere den Pfad, es sollte etwas wie C:\openssl-0.9.8k_X64\bin\openssl sein (add\openssl am Ende)

4. (Holen Sie sich den Pfad zum bin-Ordner von Jdk. Wenn Sie wissen, wie das geht, ignorieren Sie dies). 

Öffnen Sie Android Studio ~ Datei ~ Projektstruktur (Strg + Alt + Umschalttaste +), wählen Sie den SDK-Speicherort im linken Seitenbereich aus, kopieren Sie den JDK-Speicherort und fügen Sie/bin hinzu 

Die endgültige JDK-Position wird also wie C:\Program Files\Android\Android Studio\jre\bin aussehen.

wir folgen dieser Methode, um den Jdk-Speicherort zu ermitteln, da Sie eingebettetes Jdk-Programm wie ich verwenden könnten

 enter image description here

jetzt haben Sie OpenSSl-Standort und JDK-Standort 

5. Jetzt brauchen wir den Debug-Keystore-Speicherort. Dafür muss C ~> Users ~> YourUserName ~> .Android vorhanden sein. Es sollte ein Dateiname debug.keystore vorhanden sein 

C:\Users\Redman\.Android\debug.keystore

6. Öffnen Sie jetzt den Befehl Eingabeaufforderung und geben Sie den Befehl ein

cd YourJDKLocationFromStep4  

in meinem Fall 

 cd C:\Program Files\Android\Android Studio\jre\bin

7. konstruiere nun den folgenden Befehl

keytool -exportcert -alias androiddebugkey -keystore YOURKEYSTORELOCATION | YOUROPENSSLLOCATION sha1 -binary | YOUROPENSSLLOCATION base64

in meinem Fall wird der Befehl aussehen 

keytool -exportcert -alias androiddebugkey -keystore C:\Users\Redman\.Android\debug.keystore | C:\openssl-0.9.8k_X64\bin\openssl sha1 -binary | C:\openssl-0.9.8k_X64\bin\openssl base64

geben Sie nun diesen Befehl in die Eingabeaufforderung ein. Wenn Sie jemals richtig gehandelt haben, werden Sie nach dem Kennwort gefragt (Kennwort ist Android).

Enter keystore password:  Android

das ist es, Sie erhalten den Key Hash, kopieren Sie ihn einfach und verwenden Sie ihn

Konstruieren Sie für Signed KeyHash den folgenden Befehl

keytool -exportcert -alias YOUR_ALIAS_FOR_JKS -keystore YOUR_JKS_LOCATION | YOUROPENSSLLOCATION sha1 -binary | YOUROPENSSLLOCATION base64

geben Sie Ihr Keystore-Passwort ein. Wenn Sie ein falsches Passwort eingeben, wird ein falscher KeyHash angezeigt 

HINWEIS 

Wenn aus irgendeinem Grund Fehler in einem Pfad angezeigt werden, den Pfad in doppelte Anführungszeichen setzen. Auch Windows Power Shell funktionierte nicht gut für mich, ich verwendete git bash (oder benutze den Befehl Prompt).

beispiel

keytool -exportcert -alias androiddebugkey -keystore "C:\Users\Redman\.Android\debug.keystore" | "C:\openssl-0.9.8k_X64\bin\openssl" sha1 -binary | "C:\openssl-0.9.8k_X64\bin\openssl" base64
11
Manohar Reddy

Für Windows:

  1. Öffnen Sie den Befehl Aufforderung und fügen Sie den folgenden Befehl ein

keytool -exportcert -alias androiddebugkey -keystore % HOMEPATH% .Android\debug.keystore | openssl sha1 -binary | openssl base64

  1. Passwort eingeben: Android -> Drücke Enter

  2. Generierten Hash-Schlüssel kopieren -> Melden Sie sich mit Ihrem Entwicklerkonto bei Facebook an

  3. Gehen Sie zu Ihrer Facebook-App -> Einstellungen -> Hash-Key einfügen in der Option "Key Hashes" -> Änderungen speichern.

  4. Testen Sie jetzt Ihre Android-App mit Facebook Anmelden/Teilen usw.

9
swiftBoy

So erhielt ich mein: 

private class SessionStatusCallback implements Session.StatusCallback {
        @Override
        public void call(Session session, SessionState state, Exception exception) {

            if (exception != null) {
                new AlertDialog.Builder(FriendActivity.this)
                        .setTitle(R.string.login_failed_dialog_title)
                        .setMessage(exception.getMessage())
                        .setPositiveButton(R.string.ok_button, null)
                        .show();
            }

Wenn Sie also versuchen, ohne Schlüssel einzugeben, tritt eine Ausnahme auf. Facebook steckte den RECHTS-Taster in diese Ausnahme. Sie müssen es nur kopieren. 

6
Valikpon

Für einen einfachen vedio Tutorial-Link zum Generieren von KeyHash Here

Öffne openssl von HIER

5
Arpit Patel

Seit der API 26 können Sie Ihr HASH KEYS mit dem folgenden Code in KOTLIN generieren, ohne dass ein Facebook SDK erforderlich ist.

fun generateSSHKey(context: Context){
    try {
        val info = context.packageManager.getPackageInfo(context.packageName, PackageManager.GET_SIGNATURES)
        for (signature in info.signatures) {
            val md = MessageDigest.getInstance("SHA")
            md.update(signature.toByteArray())
            val hashKey = String(Base64.getEncoder().encode(md.digest()))
            Log.i("AppLog", "key:$hashKey=")
        }
    } catch (e: Exception) {
        Log.e("AppLog", "error:", e)
    }

}

 enter image description here

4
Hanny

Führen Sie entweder dies in Ihrer App aus:

FacebookSdk.sdkInitialize(getApplicationContext());
Log.d("AppLog", "key:" + FacebookSdk.getApplicationSignature(this)+"=");

Oder dieses:

public static void printHashKey(Context context) {
    try {
        final PackageInfo info = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES);
        for (Android.content.pm.Signature signature : info.signatures) {
            final MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            final String hashKey = new String(Base64.encode(md.digest(), 0));
            Log.i("AppLog", "key:" + hashKey + "=");
        }
    } catch (Exception e) {
        Log.e("AppLog", "error:", e);
    }
}

Und dann schauen Sie sich die Protokolle an.

Das Ergebnis sollte mit "=" enden.

Die Lösung basiert auf hier und hier .

3

open ssl herunterladen :

Dann fügen Sie den Pfadsystemvariablen openssl\bin hinzu:

Mein Computer -> Eigenschaften -> Erweiterte Konfigurationen -> Erweitert -> Systemvariablen -> Suchen Sie unter Systemvariablen nach Pfad, und fügen Sie dies zu den Endungen hinzu: ; yourFullOpenSSLDir\bin

Öffnen Sie nun eine Befehlszeile in Ihrem Ordner jdk\bin C:\Programme\Java\jdk1.8.0_40\bin (unter Windows halten Sie die Umschalttaste gedrückt und klicken Sie mit der rechten Maustaste -> Befehlszeile hier öffnen).

keytool -exportcert -alias keystorealias -keystore C:\yourkeystore\folder\keystore.jks | openssl sha1 -binary | openssl base64

Und kopieren Sie die 28-Längen-Nummer, die nach der Eingabe des Passworts generiert wird.

3
sagits

Sie können einfach einzeiliges Javascript in der Browserkonsole verwenden, um einen hexadezimalen Kartenschlüssel in base64 zu konvertieren. Öffne die Konsole im neuesten Browser (F12 unter Windows) und füge den Code ein und ersetze den SHA-1, SHA-256 Hex-Karte, die Google Play unter _Release Managment_> _App signing_ bereitstellt:

_> btoa('a7:77:d9:20:c8:01:dd:fa:2c:3b:db:b2:ef:c5:5a:1d:ae:f7:28:6f'.split(':').map(hc => String.fromCharCode(parseInt(hc, 16))).join(''))
< "p3fZIMgB3fosO9uy78VaHa73KG8="
_
2
Christos Lytras

EINFACH -> Installieren Sie nicht openssl -> BENUTZEN SIE GIT BASH!

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

Das Standardkennwort lautet "Android".

Die meisten von uns haben Git Bash installiert, das ist meine Lieblingsmethode.

1
Dmitri R117

Sie können alle Ihre Fingerabdrücke unter https://console.developers.google.com/projectselector/apis/credentials abrufen.
Verwenden Sie diesen Kotlin-Code, um ihn in Keyhash zu konvertieren:

fun main(args: Array<String>) {
    listOf("<your_production_sha1_fingerprint>",
            "<your_debug1_sha1_fingerprint>",
            "<your_debug2_sha1_fingerprint>")
            .map { it.split(":") }
            .map { it.map { it.toInt(16).toByte() }.toByteArray() }
            .map { String(Base64.getEncoder().encode(it)) }
            .forEach { println(it) }
}
1
Alexmelyon

https://developers.facebook.com/docs/Android/getting-started/

4.19.0 - 25. Januar 2017

Facebook SDK

Geändert

Das Facebook SDK wird jetzt beim Start der Anwendung automatisch initialisiert. In den meisten Fällen ist ein manueller Aufruf von FacebookSDK.sdkInitialize () nicht mehr erforderlich. Siehe Upgrade-Anleitung für weitere Details.

Für Debuggen

try {
    PackageInfo info = getPackageManager().getPackageInfo(getPackageName(), 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 (NoSuchAlgorithmException e) {
    e.printStackTrace();
} catch (Exception e) {
    e.printStackTrace();
}
1
Ketan Ramani

Wenn Sie die App bereits in den Play Store hochgeladen haben, können Sie den Hash-Schlüssel folgendermaßen generieren:

1) Gehen Sie zu Release Management hier

2) Wählen Sie Release Management -> App Signing

3) Sie können den SHA1-Schlüssel im Hex-Format als App-Signaturzertifikat sehen.

4) Kopieren Sie den SHA1 im Hex-Format und konvertieren Sie ihn in das Base64-Format. Sie können this link verwenden, um dies ohne den SHA1: -Teil des Hex zu tun.

5) Gehen Sie zur Facebook-Entwicklerkonsole und fügen Sie den Schlüssel (nach der Konvertierung in die Basis 64) in den Einstellungen -> Basis -> Schlüssel-Hashes hinzu.

1
SumiSadiq

Ich habe das einfachste Werkzeug gefunden und es oft verwendet, es funktioniert perfekt. check it out, es wird helfen.

Überprüfen Sie diese für weitere Details.

1
TapanHP

Versuchen Sie diese Antwort

https://stackoverflow.com/a/54513168/9236994

mit minimalem Aufwand hilft das Problem zu beheben.

0
Vicky Salunkhe

Ich hatte genau das gleiche Problem, ich wurde nicht nach einem Kennwort gefragt und es scheint, als hätte ich den falschen Pfad für die Keystore-Datei.

Wenn das Schlüsselwerkzeug den von Ihnen festgelegten Schlüsselspeicher nicht findet, erstellt es einen und gibt Ihnen den falschen Schlüssel, da er nicht den richtigen verwendet.

Wenn Sie nicht nach einem Kennwort gefragt werden, wird der falsche Schlüssel generiert.

0

Sie können diese apk verwenden. 

1.first install the app from the Google Play Store
2.install the above apk
3.launch the apk and input the package name of your app
4.then you will get the hash code you want
0
armnotstrong

Dies wird auch Neulingen helfen.

Füge einfach mehr Details zu @ coder_For_Life22s Antwort hinzu.

Wenn diese Antwort Ihnen hilft, vergessen Sie nicht, Ihre Meinung zu verbessern. es motiviert uns.

Dazu müssen Sie bereits den Pfad der Keystore-Datei und das Passwort der App kennen

In diesem Beispiel wird angenommen, dass der Schlüssel unter "c:\keystorekey\new.jks" gespeichert ist.

1. Öffnen Sie diese Seite https://code.google.com/archive/p/openssl-for-windows/downloads

2. Laden Sie die 32- oder 64-Bit-Zip-Datei gemäß Ihrem Windows-Betriebssystem herunter.

3. Extrahieren Sie die heruntergeladene Datei, wo immer Sie möchten, und merken Sie sich den Pfad.

4. In diesem Beispiel wird davon ausgegangen, dass Sie den Ordner im Download-Ordner extrahiert haben.

Die Adresse der Datei lautet also "C:\Users\0\Downloads\openssl-0.9.8e_X64\bin\openssl.exe".

5. Jetzt auf der Tastatur drücken Sie Windows + R-Taste.

6. Dadurch wird die Run-Box geöffnet.

7. Geben Sie cmd ein und drücken Sie STRG + UMSCHALT + EINGABETASTE.

8. Dadurch wird die Eingabeaufforderung als Administrator geöffnet.

9. Hier navigieren Sie zu Javas Bin-Ordner:

Wenn Sie jre verwenden, das von Android Studio bereitgestellt wird, finden Sie den Pfad wie folgt:
ein. öffne Android Studio.
b. Datei-> Projektstruktur
c. Klicken Sie im linken Bereich auf "SDK-Speicherort".
d. Im rechten Bereich unter "JDK-Speicherort" befindet sich Ihr jre-Pfad.
e. Fügen Sie am Ende dieses Pfads "\ bin" hinzu, da sich die von uns benötigte Datei "keytool.exe" in diesem Ordner befindet.
Für dieses Beispiel haben Sie Java separat installiert und folgen dem Pfad
"C:\Programme\Java\jre-10.0.2\bin"
Wenn Sie 32bit Java installiert haben, befindet es sich in
"C:\Programme (x86)\Java\jre-10.0.2\bin"
10. Führen Sie nun mit den obigen Pfaden den Befehl wie folgt aus:

keytool -exportcert -alias androiddebugkey -keystore "c:\keystorekey\new.jks" | "C:\Users\0\Downloads\openssl-0.9.8e_X64\bin\openssl.exe" sha1 -binary |"C:\Users\0\Downloads\openssl-0.9.8e_X64\bin\openssl.exe" base64
  1. Sie werden nach dem Kennwort gefragt. Geben Sie das Kennwort ein, das Sie beim Erstellen des Keystore-Schlüssels angegeben haben.

    !!!!!! dies wird Ihnen den Schlüssel geben

fehler: wenn Sie bekommen:
---
'keytool' wird nicht als interner oder externer Befehl erkannt
---
Das bedeutet, dass Java woanders installiert ist.

0
sifr_dot_in