Frage

Ich versuche, eine Android -App mit Facebook -Integration zu erstellen. Ich bin zu dem Teil der Dokumente gekommen, in dem Sie eine Schlüsseldatei generieren müssen. Es wird angegeben, den folgenden Code auszuführen

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

Wenn ich dies in meinem Terminal ausführe, erhalte ich einen Fehler für Keystore, das manipuliert hat, oder das Passwort war falsch,

Ich möchte nur meinen Schlüsselhash generieren

Kann mir jemand in die richtige Richtung verweisen?

War es hilfreich?

Lösung

Löschen Sie Ihr Debug -Zertifikat unter ~/.android/debug.keyStore (unter Linux und Mac OS X); Das Verzeichnis ist so etwas wie %userHome %/. Android unter Windows.

Das Eclipse -Plugin sollte dann ein neues Zertifikat generieren, wenn Sie das nächste Mal versuchen, ein Debug -Paket zu erstellen.

Lassen Sie mich wissen, ob das funktioniert.

Andere Tipps

Um einen wichtigen Hash zu generieren, müssen Sie einige einfache Schritte ausführen.

1) Download OpenSSL von: hier.

2) machen a OpenSSL Ordner in C Fahrt

3) Zip -Dateien extrahieren Sie in diese OpenSSL Ordner erstellt in C Fahrt.

4) Kopieren Sie die Datei Debug.KeyStore aus .Android Ordner in meinem Fall (c: user system.android) und fügen Sie in meinem Fall in den Ordner jdk bin einfügen (c: Programme java jdk1.6.0_05 bin)

5) Öffnen Sie die Eingabeaufforderung und geben Sie in meinem Fall den Pfad des JDK -Bin -Ordners (C: Programme Java Jdk1.6.0_05 bin).

6) Kopieren Sie den folgenden Code und drücken Sie die Eingabetaste

keytool -exportcert -alias androiddebugkey -keystore debug.keystore> c: openensl bin debug.txt

7) Jetzt musst du Passwort eingeben, Passwort = Android.

8) Wenn Sie in sehen OpenSSL Binordner erhalten Sie eine Datei mit dem Namen von debug.txt

9) Jetzt können Sie entweder die Eingabeaufforderung neu starten oder mit der vorhandenen Eingabeaufforderung arbeiten

10) Kehren Sie zum C -Laufwerk zurück und Geben Sie den Weg des OpenSSL -Bin Mappe

11) Kopieren Sie den folgenden Code und fügen Sie ein

OpenSSL SHA1 -BINARY DEBUG.TXT> DEBUG_SHA.TXT

12) Sie werden bekommen debug_sha.txt im OpenSSL -Binordner

13) Kopieren Sie erneut den folgenden Code und fügen Sie sie ein

OpenSSL Base64 -in debug_sha.txt> debug_base64.txt

14) Sie werden bekommen DEBUG_BASE64.TXT im OpenSSL -Binordner

15) Öffnen DEBUG_BASE64.TXT Datei hier ist Ihr Schlüsselhash.

Aktualisierte Antwort (über Code generieren) Einfachere Methode:

Nach meiner Erfahrung war OpenSSL immer problematisch, ich habe die von Facebook vorgeschlagene zweite Methode ausprobiert. Und es ist wunderbar. Dies ist die beste Methode, um den Hash -Schlüssel zu erhalten.

Die zweite Option besteht darin, den an Facebook gesendeten wichtigsten Hash auszudrucken und diesen Wert zu verwenden. Nehmen Sie die folgenden Änderungen an der OnCreate () -Methode in Ihrer Hauptaktivität vor:

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

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

        }
        ...other operations

}//end of onCreate

Ersetzen Sie com.facebook.Samples.loginhowto durch Ihren eigenen Paketnamen (Paketname in Manifest.xml).

Offizieller Link - https://developers.facebook.com/docs/android/login-with-facebook/ (Siehe unten auf der Seite)

Alte Antwort (Generierung von Keyhash mit OpenSSL)

  1. Um eine Signatur zu generieren, müssen Sie OpenSL auf Ihrem PC installiert. Wenn Sie keinen Download OpenSSL haben von hier
  2. In C:, erstellen openssl Mappe
  3. Extrahieren Sie den Inhalt der heruntergeladenen OpenSSL -ZIP -Datei in die Datei openssl Ordner in C:Fahrt
  4. Öffnen Sie die Eingabeaufforderung
  5. ziehen nach bin von openssl dh C:\openssl\bin in der Eingabeaufforderung
  6. Führen Sie den folgenden Befehl aus, um Ihren KeyHash zu generieren. Beim Generieren von Hashkey sollte es Ihnen das Passwort fragen.

    keytool -exportcert -alias androiddebugkey -keystore "c: user anhsirk.android debug.keystore" | OpenSSL SHA1 -BINARY | OpenSSL Base64

HINWEIS: Im obigen Code beachten Sie, dass Sie geben müssen Ihr Weg zum Benutzer (IE in meinem Fall ist es C: Benutzer anhsiirk, Sie müssen dies nur für Ihr Benutzerkonto ändern.

Passwort geben als Android

. Wenn nicht nach Passwort gefragt wird, ist Ihr Keystore -Pfad falsch.

Wenn alles gut funktioniert, sollte es Ihnen den Hashkey unten geben.

enter image description here

Der richtige Schlüssel kann von der App selbst erhalten werden, indem der folgende Code hinzugefügt wird, um den richtigen Schlüssel -Hash zu rösten (im Falle von Facebook SDK 3.0 funktioniert dies)

try {
            PackageInfo info = getPackageManager().getPackageInfo("com.package.mypackage",         PackageManager.GET_SIGNATURES);
            for (Signature signature : info.signatures) {
                MessageDigest md = MessageDigest.getInstance("SHA");
                md.update(signature.toByteArray());
                String sign=Base64.encodeToString(md.digest(), Base64.DEFAULT);
                Log.e("MY KEY HASH:", sign);
                Toast.makeText(getApplicationContext(),sign,         Toast.LENGTH_LONG).show();
            }
} catch (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}

Ersetzen Sie com.package.mypackage durch Ihren Paketnamen

I. Erstellen Sie ein wichtiges Hash -Debug für Facebook

Fügen Sie Code hinzu, um den Schlüssel -Hash für Facebook auszudrucken

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

    } catch (NoSuchAlgorithmException e) {

    }

II. Erstellen Sie eine wichtige Hash -Release für Facebook

  1. Download OpenSSL-0.9.8E_X64
  2. Machen Sie einen OpenSSL -Ordner im C -Laufwerk
  3. Extrahieren Sie Zip -Dateien in den OpenSSL -Ordner
  4. Start -> Ausführen: CMD (Drücken Sie die Eingabetaste)
  5. (Drücken Sie) CD C: Programme java jdk1.6.0_45 bin. Hinweis: C: Programme Java Jdk1.6.0_45 bin: Ist der Weg zum JDK -Ordner in Ihrem Computer
  6. (Drücken Sie) KeyTool -exportCert -alias gci -keystore d: order keystorerelease | C: openSSL bin openSSL SHA1 -BINARY | C: OpenSSL bin openssl Base64. Hinweis: D: Ordner Keystorerelease: Ist Pfad zu Ihrer Keystorerelease

  7. Geben Sie das Keystore -Passwort ein: Dies ist Passwort, wenn Ihr Register Keystorerelease.

    Dann haben Sie einen wichtigen Hash: jdehabcdiqedwayz5ow4sjsxlsw =

  8. In Facebook anmelden. Zugriff auf Verwaltung von Apps. Fügen Sie Key Hash in Ihre App auf Entwickler.facebook.com ein

Einfachster Weg, um den Hash -Schlüssel zu generieren.

Erfordernis: SHA1 -Schlüssel

Sie können den SHA1 -Schlüssel finden, indem Sie Laufen Signingreport

Siehe Bild unten.

enter image description here

Nachdem Sie die Datei ausgeführt haben, wird Ihre Ausgabe generiert, die den erforderlichen SHA1 -Schlüssel enthält.

enter image description here

Dann geh zuhttp://tomeko.net/online_tools/hex_to_base64.php

und fügen Sie Ihren SHA1 -Schlüssel ein

enter image description here

Und schließlich werden Sie benötigtes Hashkey.

Die einfachste Lösung für dieses Problem:

Ich habe dieses Problem seit zwei Monaten. Meine wichtigsten Hashes waren bis zu 9 Uhr. Heute habe ich endlich die einfache Lösung gefunden:

SCHRITT 1:

Installieren Sie das Facebook SDK, das Sie auf der Facebook -Entwicklerseite auf Ihrem Telefon heruntergeladen haben. Installieren Sie die normale Facebook -App nicht. Stellen Sie sicher, dass Sie sich bei Facebook anmelden können. Dann melden Sie sich aus.

SCHRITT 2:

Exportieren Sie Ihre App mit Ihrem endgültigen Release -Schlüssel als APK, wie Sie es beim Hochladen in den Playstore tun würden.

SCHRITT 3:

Setzen Sie die APK -Datei über USB -Kabel oder USB -Stick auf Ihr Telefon.

SCHRITT 4:

Installieren Sie Ihre App mit einem Dateimanager: Beispiel

Schritt 5:

Starten Sie Ihre App und versuchen Sie, sich mit Facebook anzumelden. Ein Dialog wird sich öffnen und Ihnen sagen: "Der Schlüssel, den YouHashkey in der Facebook -Entwicklerkonsole nicht gefunden wurde."

Schritt 6:

Schreiben Sie den Schlüssel auf.

Schritt 7:

Setzen Sie es in Ihre Facebook -Entwicklerkonsole ein und speichern Sie es. Jetzt bist du fertig. Jeder, der Ihre App herunterlädt, die mit früher gebrauchtem Keystore veröffentlicht wurde, kann sich bei Facebook anmelden.

Genießen

Wenn Sie veröffentlichen, verwenden Sie den Keystore, mit dem Sie Ihre App exportieren, und nicht mit dem Debug.KeyStore.

Das Passwort des Debug -Zertifikats ist Android und nicht Android

Zu guter Letzt :)

Hier meine Geschichte:

  1. Fügen Sie diesen Code Ihrer Hauptaktivität hinzu, nachdem Sie das Layout festgelegt haben.

    try { 
      PackageInfo info = getPackageManager().getPackageInfo("PROJECTNAME", PackageManager.GET_SIGNATURES);
      for (Signature signature : info.signatures) {
          MessageDigest md = MessageDigest.getInstance("SHA");
          md.update(signature.toByteArray());
          String sign=Base64.encodeToString(md.digest(), Base64.DEFAULT);
          Log.e("MY KEY HASH:", sign);
          //textInstructionsOrLink = (TextView)findViewById(R.id.textstring);
          //textInstructionsOrLink.setText(sign);
          Toast.makeText(getApplicationContext(),sign, Toast.LENGTH_LONG).show();
      }
    } catch (NameNotFoundException e) {
        Log.d("nope","nope");
    } catch (NoSuchAlgorithmException e) {
    }
    
  2. Ändern Sie ProjectName in Ihren Paketnamen!

  3. Unterschreiben Sie Ihre App (Android-Tools-> Signierte Anwendung exportieren)
  4. In Ihrer Hauptaktivität, in der Sie Code von 2 Option einfügen, erstellen Sie in Ihrem Layout TextView mit id textstring
  5. In Überzeugung zwei Zeilen, dass Ihr Zeichencode auf textView 6 Wuolia festgelegt wird. Sie haben Ihren Hash, die App auf Ihrem Telefon installieren !!! Und überprüfen Sie Ihren Hash -Schlüssel!
  6. Wenn es nun sichtbar ist, gehen Sie zur Facebook -App, die Sie erstellt haben, und fügen Sie sie zu [Schlüsselhashes] hinzu.
  7. Beachten Sie, dass Ihr Paketname wie auf Facebook [Paketname] unter [Key Hashes] sein sollte wie auf Facebook [Paketname].
  8. Einen schönen Tag noch :)

Eine Zeilenlösung für Facebook generieren

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

Um Release Key Hash zu generieren, müssen Sie einige einfache Schritte ausführen.

1) Download OpenSSL

2) Erstellen Sie einen OpenSSL -Ordner im C -Laufwerk

3) Zip -Dateien in diesen in C -Laufwerk erstellten OpenSSL -Ordner extrahieren.

4) Kopieren Sie die Datei debug.keyStore aus .android in meinem Fall (c: user System.android) und fügen Sie in meinem Fall (C: Programme java jdk1.6.0_05 bin) in den jdk bin -Ordner ein.

5) Öffnen Sie die Eingabeaufforderung und geben Sie in meinem Fall den Pfad des JDK -Bin -Ordners an (C: Programme Java Jdk1.7.0_40 bin).

6) Kopieren Sie den folgenden Code und drücken Sie die Eingabetaste

keytool -exportcert -alias ABCD -KeyStore D: Projects MyAppfolker keystore.txt | C: OpenSSL bin openSSL SHA1 - BINARY | C: OpenSSL bin OpenSSL Basis64 ex -keytool -exportcert -alias (Ihr sing apk alias Name hier wie mein Zeichen apk alian Name ist ABCD) -KeyStore "Signiertes apk generiert Keystore APTH GESETZT HIER" | "OpenSSL Bin Ordner Path Enter HIER" SHA1 - BINARY | "OpenSSL Bin Ordner -Pfad hier eingeben" Base64

7) Jetzt müssen Sie Kennwort eingeben, Passwort = (Geben Sie hier Ihr Keystore -Kennwort ein.)

8) Sie haben Keystore, die für die Release -App -Schlüsselhash verwendet werden

Obwohl dieser Thread alt ist, möchte ich meine Erfahrungen (kürzlich mit Facebook gearbeitet) teilen, was mir klar erscheint:

  1. Download OpenSSL aus dem Link Bellow:https://code.google.com/p/opensl-for-windows/downloads/List
  2. Entpacken Sie es auf ein lokales Laufwerk (z. B. C: Openensl)
  3. Verwenden Sie den folgenden Befehl aus der Befehlszeile in Windows, um den Entwicklungsschlüssel für die Facebook -Integration zu erhalten:

    keytool -exportcert -alias androiddebugkey -keystore %homepath %.android debug.keystore | "C: opensensl bin openSSL.exe" SHA1 -BINARY | "C: openSSL bin openssl.exe" Base64

Hinweis!: Bitte ersetzen Sie den Pfad für OpenSSL.exe (in diesem Beispiel ist es "C: openSSL bin openssl.exe") mit Ihrem eigenen Installationspfad.

  1. Es wird nach Passwort aufgefordert, z. B., z. B.

Geben Sie das Keystore -Passwort ein: Android

Geben Sie Android als Passwort wie oben gezeigt ein.

Das ist es! Sie erhalten einen 28 -Charakter -Long -Schlüssel. Prost!

Verwenden Sie die gleiche Prozedur, um den Release -Schlüssel zu erhalten. Ersetzen Sie den Befehl einfach durch die folgenden und verwenden Sie Ihren Release -Key -Alias.

keytool -exportcert -alias your_release_key_alias -keystore your_release_key_path | "Pfad für OpenSsl.exe" SHA1 -BINARY | OpenSSL Base64

Generieren Sie den Debug -Hash -Schlüssel

  public String hashkey(Context context) {
        String keyhash = "";
        try {
            PackageInfo info = context.getPackageManager().getPackageInfo(context.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));
                keyhash = Base64.encodeToString(md.digest(), Base64.DEFAULT);
            }
        } catch (PackageManager.NameNotFoundException e) {

        } catch (NoSuchAlgorithmException e) {

        }
        return keyhash;
    }

Generieren Sie Release -Hash -Schlüssel

 keytool -exportcert -alias specialbridge -keystore /home/shilpi/newproject/specialBridge/SpecialBridgeAndroid/keystore/specialbridge.jks | openssl sha1 -binary | openssl base64

Toller Blog -Beitrag zu diesem Thema

Extrahieren des Schlüsselhashs aus .p12 Schlüssel

  1. Öffnen Sie die Terminal- oder Befehlszeile und navigieren Sie zu Ihrem .P12 -Schlüssel.
  2. Geben Sie ein: „KeyTool -v -List -keystore myCert.p12 -storetype pkcs12 ″ wobei MyCert.p12 der Dateiname Ihres .p12 -Schlüssels ist.
  3. Geben Sie das Keystore -Kennwort ein (das, das Sie beim Exportieren von .p12 -Schlüssel verwendet haben). 4. Kopieren Sie SHA1 Fingerabdruck Signature Bytes Text.
  4. Die Bytes bei SHA1 -Fingerabdruck -Signatur werden benötigt, um die Datei „SHA1.bin“ zu schreiben. Sie können einen Hexadezimal -Editor verwenden, um die von Ihnen kopierten Bytes einzufügen. Speichern Sie danach die Datei als "sha1.bin".
  5. Open Terminal erneut und geben Sie ein: „OpenSSL Base64 -in SHA1.bin -out Base64.txt“.
  6. Das resultierende „Base64.txt“ enthält den wichtigsten Hash, der für Facebook benötigt wird.

Toller und einfacher Hexadezimalredakteur für Mac: Hexfiend

OpenSSL sollte auf dem Mac vorinstalliert werden, und hier ist der Link für Windows -Version.

Verknüpfung

Versuchen Sie das Passwort für den Schlüssel und speichern Sie als Teil des Befehls

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

Ich konnte die angeforderte Aufgabe mit einigen der Lösungen hier ausführen, aber dachte mir, der Junge, der dumm ist ... Warum sollte ich nicht einen kleinen Java -Code schreiben, der dies tut, und es in ein Glas packen, also habe ich es getan. ..

EIN Link zum Download das Gefäss

Funktioniert unter Windows 8 ... probiert kein anderes Betriebssystem aus.

Hallo allerseits, es ist meine Geschichte, wie ich signiert werde, hat den Schlüssel für Facebook

Zunächst haben Sie nur diese 2 Methoden in Ihrer ersten Klasse kopieren

    private void getAppKeyHash() {
    try {
        PackageInfo info = getPackageManager().getPackageInfo(
                getPackageName(), PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures) {
            MessageDigest md;

            md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            String something = new String(Base64.encode(md.digest(), 0));
            System.out.println("HASH  " + something);
            showSignedHashKey(something);

        }
    } catch (NameNotFoundException e1) {
        // TODO Auto-generated catch block
        Log.e("name not found", e1.toString());
    } catch (NoSuchAlgorithmException e) {

        Log.e("no such an algorithm", e.toString());
    } catch (Exception e) {
        Log.e("exception", e.toString());
    }
}
public void showSignedHashKey(String hashKey) {

    AlertDialog.Builder adb = new AlertDialog.Builder(this);
    adb.setTitle("Note Signed Hash Key");
    adb.setMessage(hashKey);
    adb.setPositiveButton("OK", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {

        }
    });

    adb.show();
}

** Rufen Sie die Funktion GetAppKeyHash () aus Ihrer Oncreate -Methode an, wenn Sie signiertes Hash möchten, und machen signierte apk **

Wenn Ihr Passwort = Android falsch ist, setzen Sie Ihr PC -Passwort darauf ein, dass es für mich funktioniert.

Und zum Generieren von Keyhash versuchen Sie diesen Link Hier

Das einzige, was für mich funktioniert, ist das Passwort zu verwenden android. Warum wird das in keiner Führer da draußen erwähnt?

Verwenden Sie dies in Kotlin für Druckschlüssel -Hash im Protokoll

try {
        val info = context.getPackageManager().getPackageInfo(context.packageName,
                PackageManager.GET_SIGNATURES);
        for (signature in info.signatures) {
            val md = MessageDigest.getInstance("SHA")
            md.update(signature.toByteArray())
            Log.d("Key hash ", android.util.Base64.encodeToString(md.digest(), android.util.Base64.DEFAULT))
        }
    }catch (e:Exception){

    }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top