Wie erstelle ich Android Facebook Key Hash?


179

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


Wenn Sie das neueste Facebook SDK verwenden und Ihre Facebook-API perfekt geputtet haben, klicken Sie beim Anmelden auf Anmelden bei Facebook und dann wird in Ihrem Logcat der Hash-Schlüssel gedruckt.
Mehul Ranpara

Um Ihren Schlüssel-Hash auf Ihrem lokalen Computer zu generieren, führen Sie das Java-Dienstprogramm keytool (das sich auf dem Pfad Ihrer Konsole befinden sollte) für den Android-Debug-Keystore aus. Dies befindet sich standardmäßig in Ihrem Home-Android-Verzeichnis. 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
Rakesh

Warum sollte jemand einen Debug-Schlüssel erstellen wollen?
Anders Lindén

Ich habe den Schlüssel-Hash generiert, weiß aber nicht, wo ich diesen Schlüssel ablegen soll. Würden Sie mich führen? Ich verwende Android Studio unter Ubuntu.
Apurva

Antworten:


241

Folgendes müssen Sie tun:

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

Erkennen des Dateipfads debug.keystore. Wenn Sie nicht gefunden haben, führen Sie eine Suche in C: / durch und verwenden Sie im nächsten Schritt den Pfad im Befehl.

Ermitteln Sie den Pfad keytool.exe, gehen Sie zu dieser dir / in-Eingabeaufforderung und 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 dem Passwort fragen, Android setzen, das ist alles. Du wirst einen Key-Hash bekommen


Wenn ich nach einem Passwort gefragt werde, kann ich alles eingeben, was ich will?
Somk

5
@Max, Standardkennwort ist android.
Jamapag

2
Schlüssel-Hash stimmt nicht mit gespeicherten Schlüssel-Hashes überein Android, funktioniert nicht
Boldijar Paul

1
Erstellen Sie zunächst einen Keystore, indem Sie in Ihrem Studio auf Build -> Build Apk klicken. Geben Sie einen Namen, ein Passwort usw. ein. Speichern Sie es als .jks-Datei in einem Ordner, auf den Sie leicht zugreifen können. Kopieren Sie nun den Pfad und generieren Sie den Schlüssel, indem Sie diesen Pfad in der oben genannten Antwort ersetzen.
Buggydroid

1
Es zeigt mir einen Fehler: "... Ausdrücke sind nur als erstes Element einer Pipeline zulässig. In Zeile: 1 char: 184 ... Unerwartetes Token 'sha1' in Ausdruck oder Anweisung. ... Ausdrücke sind nur als zulässig das erste Element einer Pipeline. ... Unerwartetes Token 'base64' in Ausdruck oder Anweisung. + CategoryInfo: ParserError: (:) [], ParentContainsErrorRecordException + FullyQualifiedErrorId: ExpressionsMustBeFirstInPipeline "
Android-Entwickler

170

Für Linux und Mac

Terminal öffnen:

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 dem Desktop ein. Führen Sie den obigen Befehl aus.

Zur Veröffentlichung Build

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

HINWEIS: Stellen Sie sicher, dass in beiden Fällen ein Kennwort abgefragt wird. Wenn Sie nicht nach einem Kennwort gefragt werden, bedeutet dies, dass im Befehl etwas nicht stimmt. Das Passwort für debug.keystore lautet " android " und für die Freigabe müssen Sie das Passwort eingeben, das Sie beim Erstellen des Keystores festgelegt haben .


3
Das Passwort ist leer. Drücken Sie einfach die <Eingabetaste>, wenn Sie dazu aufgefordert werden.
Tom Redman

Ich habe den Schlüssel-Hash generiert, weiß aber nicht, wo ich diesen Schlüssel ablegen soll. Würden Sie mich führen? Ich verwende Android Studio unter Ubuntu.
Apurva

1
Dieser Hinweis: "HINWEIS: Stellen Sie sicher, dass in beiden Fällen ein Kennwort abgefragt wird. Wenn kein Kennwort abgefragt wird, bedeutet dies, dass im Befehl etwas nicht stimmt." war wichtig, um das Problem zu lösen
Bleno Silva

Danke für die Rettung meines Lebens. Ich tyiping mein Mac-Passwort für das Keystore-Passwort die ganze Zeit und ich erkannte, dass es falsch war
Lucky Angelo

Selbst wenn Sie nach einem Passwort fragen, bedeutet dies nicht, dass alles in Ordnung ist (falsches Passwort, falscher Schlüsselalias). Laufen Sie zuerst keytool -exportcert -alias <aliasName> -keystore <keystoreFilePath>alleine, um zu sehen, ob alles in Ordnung ist. Wenn sich das Keytool weiterleitet, befindet es sich im nicht interaktiven Modus und zeigt das Kennwort bei der Eingabe im Klartext an. Schreiben Sie also besser ein kleines Skript, das die Befehle separat ausführt.
Pierre

97

Bitte versuchen Sie dies:

public static void printHashKey(Context pContext) {
        try {
            PackageInfo info = pContext.getPackageManager().getPackageInfo(pContext.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);
        }
    }

Ich habe den Schlüssel-Hash generiert, weiß aber nicht, wo ich diesen Schlüssel ablegen soll. Würden Sie mich führen? Ich verwende Android Studio unter Ubuntu.
Apurva

Dies ist der
richtige

1
Dies funktioniert, wenn Sie pContext.getPackageInfo aufrufen. Oder entfernen Sie es einfach aus einer Funktion und rufen Sie es in onCreate einer beliebigen Aktivität auf.
Dpedrinha

1
Dies scheint nun getPackageManager (). GetPackageInfo ([Ihr-Paketname], PackageManager.GET_SIGNATURES) zu sein
bis

@Apurva Sie können es in Android SharedPreferences einfügen, falls Sie es später verwenden.
Maddy

49

OpenSSL: Sie müssen das installieren, wenn es nicht mit Ihrem Betriebssystem vorinstalliert ist (z. B. Windows hat es nicht vorinstalliert). . Wie das installiert wird, hängt von Ihrem Betriebssystem ab (für Windows überprüfen Sie den Link von coder_For_Life22).

Der einfachste Weg, ohne herumzuspielen, ist das Kopieren der Binärdatei openssl.exe in Ihren Keytool-Pfad, wenn Sie unter Windows arbeiten. Wenn Sie das nicht möchten, müssen Sie es Ihrem hinzufügenPATH Umgebungsvariablen . Führen Sie dann den in den Dokumenten angegebenen Befehl aus.

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

Beachten Sie, dass das Argument nach -keystoreauf 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 Passworts aufgefordert werden. Das ist androidfü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 hashFeld innerhalb der Einstellungen Ihrer App auf Facebook. Um dorthin zu gelangen, gehen Sie zu developer.facebook.com/apps , wählen Sie Ihre App aus, gehen Sie zu Edit settingsund scrollen Sie nach unten. Warten Sie danach einige Minuten, bis die Änderungen wirksam werden.


Ich habe dies in cmd ausgeführt und es wurde eine sehr lange Liste von Zeichen ausgegeben, die wie ein Hash aussehen, der mit einem = -Zeichen endet, dann nichts $ keytool -exportcert -alias androiddebugkey -keystore "C: \ Users \ .android \ debug.keystore" | "C: \ OpenSSL \ bin \ openssl" sha1 -binary | "C: \ OpenSSL \ bin \ openssl" base64
Somk

Klingt richtig. Ich habe es gerade auf meinem Computer getestet und war 28 Zeichen lang für mich, nur um Ihnen eine Idee zu geben. Jetzt kopiere es einfach und es geht dir gut. :)

Ich wurde nicht aufgefordert, das Pharse Android zu verwenden. Entschuldigung, bin ich langsam?
Somk

Um ehrlich zu sein, bin ich mir nicht sicher, warum Sie nicht dazu aufgefordert wurden. Aber es klingt für mich richtig. Ich meine, wenn Sie etwas falsch gemacht hätten, sollte stattdessen eine Fehlermeldung angezeigt werden. Kopieren Sie es einfach und sehen Sie, ob es funktioniert. Sie können einige der Diagrammabfragen mit dem Diagramm-API-Explorer testen . Wählen Sie Ihre App oben aus und prüfen Sie, ob Sie gültige Ergebnisse erhalten. Es sollte einen Fehler ausspucken, wenn etwas nicht stimmt. Edit: Und nichts falsch daran, langsam zu sein. Wir haben es nicht eilig. :)

23

Um Ihren Schlüssel-Hash auf Ihrem lokalen Computer zu generieren, führen Sie das Java-Dienstprogramm keytool (das sich auf dem Pfad Ihrer Konsole befinden sollte) für den Android-Debug-Keystore aus. Dies befindet sich standardmäßig in Ihrem Home-Android-Verzeichnis. 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 Seite


Ich habe den Schlüssel-Hash generiert, weiß aber nicht, wo ich diesen Schlüssel ablegen soll. Würden Sie mich führen? Ich verwende Android Studio unter Ubuntu.
Apurva

19

Hier finden Sie alle Details (für Windows)

1. Laden Sie OpenSSl entweder als 3. oder 4. herunter (mit e funktioniert es besser), basierend auf Ihrem 32-Bit- oder 64-Bit-System.

2. Extrahieren Sie die heruntergeladene Zip-Datei im C-Verzeichnis

3. Öffnen Sie den extrahierten Ordner bis bin und kopieren Sie den Pfad. Es sollte ungefähr so ​​aussehen C:\openssl-0.9.8k_X64\bin\openssl (add \ openssl am Ende).

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

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

Der endgültige JDK-Standort wird also so sein C:\Program Files\Android\Android Studio\jre\bin

Wir folgen dieser Methode, um den JDK-Speicherort zu ermitteln, da Sie möglicherweise eingebettetes JDK wie mich verwenden

Geben Sie hier die Bildbeschreibung ein

Jetzt haben Sie OpenSSl-Speicherort und JDK-Speicherort

5. Jetzt brauchen wir den Speicherort des Debug-Keystores. Für diesen geöffneten C ~> Benutzer ~> YourUserName ~> .android sollte es einen Dateinamen debug.keystore geben. Kopieren Sie jetzt den Pfad des Pfads. Es sollte so etwas wie sein

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

6. Öffnen Sie nun die Eingabeaufforderung und geben Sie den Befehl ein

cd YourJDKLocationFromStep4  

in meinem Fall

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

7. Erstellen Sie nun den folgenden Befehl

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

In meinem Fall sieht der Befehl so aus

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 etwas richtig gemacht haben, werden Sie nach dem Passwort gefragt (Passwort ist Android).

Enter keystore password:  android

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

Erstellen 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 ausgegeben

HINWEIS

Wenn aus irgendeinem Grund ein Fehler in einem Pfad auftritt, schließen Sie diesen Pfad in doppelte Anführungszeichen. Auch die Windows-Power-Shell funktionierte bei mir nicht gut. Ich habe git bash verwendet (oder die Eingabeaufforderung verwendet).

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

1
Vielen Dank, dies ist eine sehr detaillierte Anleitung für Anfänger!
Pablo Quemé

@ TamimProduction versuchen Sie das gleiche oben beschriebene Verfahren mit k Version von openssl und sehen Sie code.google.com/archive/p/openssl-for-windows/downloads
Manohar Reddy

@TamimProduction Wenn Sie ein falsches Passwort eingeben, wird ein falscher Keyhash zurückgegeben. hast du die apk auch nach dem löschen von keystore wieder erstellt?
Manohar Reddy

@TamimProduction Facebook-Anwendung herunterladen und installieren, in Facebook-Anwendung anmelden. Öffnen Sie Ihre App und melden Sie sich bei Facebook an. Es gibt Ihnen Schlüssel-Hash in der Facebook-Anwendung, überprüfen Sie, ob es das gleiche ist wie Ihr
Manohar Reddy


17

Sie können einfach einzeiliges Javascript in der Browserkonsole verwenden, um einen Hex-Map-Schlüssel in base64 zu konvertieren. Konsole öffnet in neuestem Browser (F12 auf Windows) und fügen Sie den Code und ersetzen Sie das SHA-1, SHA-256Sechseckraster , dass Google Play bietet unter Release Managment> App signing:

> 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="

1
Sie sind ein Lebensretter, danke
Yusuf Adeyemo

SHA-1 war derjenige.
Travo

16

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));

Ein längeres, das 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.


1
Ich habe festgestellt, dass mein Schlüssel-Hash ein '_' enthält, das von FB nicht zugelassen wird. Um den Hash zu verwenden, musste ich ihn in ein '/' ändern.
Abdelalim Hassouna

Die Facebook-Funktion hat meinen Schlüssel zurückgegeben, da dies -AAAAAAAA_AAAAAA-AAAAAAAAAAvon Facebook nicht erlaubt ist. PrintHashKey hat den Schlüssel in einem gültigen Format zurückgegeben+AAAAAAAA/AAAAAA+AAAAAAAAAA=
GrafOrlov

@GrafOrlov Wie seltsam. Vielleicht haben sie einen Fehler in einer neuen FB SDK-Version. Sie sollten ihnen darüber Bericht erstatten.
Android-Entwickler

9

Für Windows:

  1. Öffnen Sie die Eingabeaufforderung 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ücken Sie die Eingabetaste

  2. Generierten Hash-Schlüssel kopieren -> Facebook mit Ihrem Entwicklerkonto anmelden

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

  4. Testen Sie jetzt Ihre Android-App mit Facebook Login / Share etc.


Ich habe den Schlüssel-Hash generiert, weiß aber nicht, wo ich diesen Schlüssel ablegen soll. Würden Sie mich führen? Ich verwende Android Studio unter Ubuntu.
Apurva

Hallo, ich kann in meiner Hauptaktivität einen Hash-Schlüssel über Code generieren, aber dieser generierte Hash-Schlüssel funktioniert nur auf einem einzelnen Gerät. Wenn ich dasselbe apk auf einem anderen Gerät installiere und ausführe, zeigt es einen ungültigen Hash-Schlüsselfehler an. Fehlt mir etwas?
Deepak

8

Seit API 26 können Sie Ihre HASH KEYS mit dem folgenden Code in KOTLIN generieren, ohne dass Sie ein Facebook SDK benötigen.

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)
    }

}

Geben Sie hier die Bildbeschreibung ein


Du meinst, ich class MainActivity: FlutterActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) GeneratedPluginRegistrant.registerWith(this) } }
lege

6

So erhielt ich meine:

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 hat die RECHTE Taste in diese Ausnahme eingefügt. Alles was Sie tun müssen, ist es zu kopieren.


Ich habe den Schlüssel-Hash generiert, weiß aber nicht, wo ich diesen Schlüssel ablegen soll. Würden Sie mich führen? Ich verwende Android Studio unter Ubuntu.
Apurva

6

Wenn Sie die App bereits in den Play Store hochgeladen haben, können Sie den Hash-Schlüssel wie folgt 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 sehen. App-Signaturzertifikat.


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


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



3

Laden Sie open ssl herunter :

Fügen Sie dann openssl \ bin zu den Pfadsystemvariablen hinzu:

Arbeitsplatz -> Eigenschaften -> Erweiterte Konfigurationen -> Erweitert -> Systemvariablen -> Suchen Sie unter Systemvariablen den Pfad und fügen Sie diesen zu seinen 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 -> öffnen Sie die Befehlszeile hier) und verwenden Sie:

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 Eingabe des Passworts generiert wird.


Ich habe nicht gesehen, dass die ursprüngliche Antwort bereits den openssl-Link enthält. Aber es ist immer noch nützlich für die Systemvariable.
Sagits

Ich habe den Schlüssel-Hash generiert, weiß aber nicht, wo ich diesen Schlüssel ablegen soll. Würden Sie mich führen? Ich verwende Android Studio unter Ubuntu.
Apurva

Sind Sie sicher, dass Sie die 28-Längen-Nummer generiert haben? Wenn ja, müssen Sie jetzt zur Facebook-Entwickler-Website (Suche auf Google) gehen und eine neue Anwendung erstellen. Unter Einstellungen können Sie eine neue Android-App hinzufügen. Dort fügen Sie Ihren Keyhash und Ihren Aktivitätsnamen ein (wo sich der Anmeldecode befindet) ). Theres ein Tutorial darüber auch auf Facebook
sagits

Vielen Dank für die schnelle Antwort, ich werde es in Kürze versuchen
Apurva

3

Führen Sie entweder Folgendes 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

EASY WAY -> Installiere nicht openssl -> USE 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, also ist dies mein Lieblingsweg.


3

Dies wird auch Neulingen helfen.

Fügen Sie einfach weitere Details zur Antwort von @ coder_For_Life22 hinzu.

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

Dazu müssen Sie den Pfad der Keystore-Datei und das Kennwort der App

für dieses Beispiel bereits kennen. Beachten Sie, dass der Schlüssel unter "c: \ keystorekey \ new.jks" gespeichert ist.

1. Öffnen Sie diese Seite unter 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 Dateiadresse lautet also "C: \ Benutzer \ 0 \ Downloads \ openssl-0.9.8e_X64 \ bin \ openssl.exe".

5. Drücken Sie jetzt auf der Tastatur die Windows + r-Taste.

6. Dadurch wird die Runbox geöffnet.

7. Geben Sie cmd ein und drücken Sie Strg + Umschalt + Eingabetaste .

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

9. Navigieren Sie hier zum Ordner bin von Java:

Wenn Sie jre verwenden, das von Android Studio bereitgestellt wird, finden Sie den Pfad wie folgt:
a. Android Studio öffnen.
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 benötigte Datei "keytool.exe" in diesem Ordner befindet.
Für dieses Beispiel betrachte ich:
"C: \ Programme \ Java \ jre-10.0.2 \ bin" ,
wenn Sie 32 - Bit - Java installiert es in sein wird
"C: \ Program Files (x86) \ Java \ jre-10.0.2 \ bin"
10. jetzt Mit den obigen Pfaden führen Sie 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 Passwort gefragt. Geben Sie das Passwort ein, das Sie beim Erstellen des Schlüsselspeichers angegeben haben.

    !!!!!! Dies gibt Ihnen den Schlüssel

Fehler: Wenn Sie Folgendes erhalten:
---
'keytool' wird nicht als interner oder externer Befehl erkannt
---
Dies bedeutet, dass Java an einer anderen Stelle installiert ist.


3

Schritt 1-> C: \ Programme \ Java \ jdk1.6.0_43 \ bin>

Schritt 2-> keytool -list -v -keystore C: \ Benutzer \ leon \ .android \ debug.keystore -alias androiddebugkey -storepass android -keypass android

Sie haben einen SHA1- Wert. Klicken Sie auf diesen Link. Sie konvertieren Ihren SHA1-Wert in HASH KEY

Ich bin 100% sicher, dass dieser Link Ihnen helfen wird



2

Sie können alle Ihre Fingerabdrücke von https://console.developers.google.com/projectselector/apis/credentials
abrufen und diesen Kotlin-Code verwenden, 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

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

4.19.0 - 25. Januar 2017

Facebook SDK

Geändert

Das Facebook SDK wird jetzt automatisch initialisiert, wenn die Anwendung gestartet wird. In den meisten Fällen ist ein manueller Aufruf von FacebookSDK.sdkInitialize () nicht mehr erforderlich. Weitere Informationen finden Sie im Upgrade-Handbuch .

Für das 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

Gerade diesen Code ausführen in Ihrem OnCreateView Oder OnStart actvity und diese Funktion Return Sie Development Key Hash .

private String generateKeyHash() {
    try {
        PackageInfo info = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures) {
            MessageDigest md = (MessageDigest.getInstance("SHA"));
            md.update(signature.toByteArray());
            return new String(Base64.encode(md.digest(), 0));
        }
    }catch (Exception e) {
        Log.e("exception", e.toString());
    }
    return "key hash not found";
}

0

Ich hatte genau das gleiche Problem, ich wurde nicht nach einem Passwort gefragt, und es scheint, dass ich den falschen Pfad für die Keystore-Datei hatte.

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

Die allgemeine Regel lautet: Wenn Sie nicht nach einem Kennwort gefragt werden, wird der falsche Schlüssel generiert.


Ich habe den Schlüssel-Hash generiert, weiß aber nicht, wo ich diesen Schlüssel ablegen soll. Würden Sie mich führen? Ich verwende Android Studio unter Ubuntu.
Apurva

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

@ Elynad Es ist chinesisch: D
armnotstrong


0

keytool -exportcert -alias androiddebugkey -keystore "C: \ Benutzer ** Deepak **. android \ debug.keystore" | " C: \ Users \ Deepak \ ssl \ bin \ openssl" sha1 -binary | " C: \ Users \ Deepak \ ssl \ bin \ openssl" base64

2 Änderungen in diesem obigen Befehl 1.Deepak === Durch Ihr System ersetzen USERNAME 2.C: \ Users \ Deepak \ ssl === Replizieren Sie Ihren Open SSL-Pfad

Führen Sie diesen Befehl aus und erhalten Sie die Ausgabe wie folgt

C: \ Users \ Deepak> keytool -exportcert -alias androiddebugkey -keystore "C: \ Users \ D eepak.android \ debug.keystore" | "C: \ Users \ Deepak \ ssl \ bin \ openssl" sha1 -binary | "C: \ Users \ Deepak \ ssl \ bin \ openssl" base64 Geben Sie das Keystore-Passwort ein: ****** ga0RGNY ****************** =


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.