2012-04-06 2 views
6

im Android Tutorial Facebook wir folgenden Code zu verwenden, wird gesagt, einen Schlüssel-Hash zu erstellen:Wie erstelle ich einen Facebook-Schlüssel-Hash?

keytool -exportcert -alias androiddebugkey -keystore ~ ​​/ .android/debug.keystore | openssl sha1 -binär | openssl base64

Ist dies der genaue Code in allen Situationen zu verwenden? Zum Beispiel anstelle von ~/.android/debug.keystore sollte es so etwas wie C:/folderone/foldertwo/.android/debug.keystore?

Wie Sie sehen, bin ich mir nicht sicher, ob Anführungsstriche erforderlich sind oder nicht, ob vollständige Pfade erforderlich sind oder nicht!

Kann jemand ein reales Beispiel liefern?

Siehe
https://developers.facebook.com/docs/mobile/android/build/#sso

+0

müssen Sie openssl von Google haben ... die Schritte in der [link] [1] [1] gegeben folgen: http://stackoverflow.com/questions/4388992/key-hash- for-android-facebook-app/6665263 # 6665263 –

+0

Sie können hier ein echtes Beispiel http://stackoverflow.com/questions/9977492/android-facebook-sdk-keystore-not-asking-or-password/10026147#10026147 – dimetil

+0

sehen Sie sollten die Antwort von Avi [hier.] Finden (http://stackoverflow.com/a/6665263/5861880) – abosamy

Antwort

2

in Eclipse, Fenster ->Vorlieben ->Android ->build ->Standard Debug-Schlüsselspeicher, den Pfad kopieren Sie die ~/.android/debug.keystore

ersetzen
11

Sie können auf diese Weise

erstellen
keytool -exportcert -alias androiddebugkey -keystore c:\Users\<your windows default user>\.android\debug.keystore | openssl sha1 -binary | openssl base64 

Schlüsselspeicher-Passwort eingeben: android

+0

Der Link ist tot – larham1

+0

Geringfügige Änderungen hier. Wenn sich Ihre openssl.exe nicht im PATH befindet, können Sie sie nicht so aufrufen (dasselbe gilt für keytool). Zweitens ist der letzte Teil "openssl base64". – Asim

+0

MacOS: keytool -exportcert -alias androiddebugkey -keystore ~ ​​/ .android/debug.keystore | openssl sha1 -binär | openssl base64 Passwort: android –

1

ich hatte das gleiche Problem, verbringe ich ein paar Stunden, um eine Lösung zu finden, aber tatsächlich der Facebook-SDK bietet die Lösung von selbst aus.

in der DialogListener Klasse geändert ich die onFacebookError Methode:

@Override 
public void onFacebookError(FacebookError error) { 
    Log.d("myTag",error.getmessage); 
} 

die App ausführen (das Zeichen mit dem gleichen Schlüssel war ich für den Markt verwenden) und auf LogCat wird eine Meldung unter diesem Tag sein mit der richtige Schlüssel

Wir hatten auch ein einfaches Projekt erstellt, das die ganze Arbeit erledigt und den richtigen Schlüssel in einer Alarmbox und auf LogCat zurückgibt. Sie finden es unter our blog.

16

versuchen

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

} catch (NoSuchAlgorithmException e) { 

} 

in der Hauptaktivität :-) Dies ist die einzige Lösung ist es für Android SDK funktioniert für mich 3.0

+1

Das beinhaltet: import android.content.pm.PackageInfo; importieren Sie android.content.pm.PackageManager; importieren android.content.pm.PackageManager.NameNotFoundException; Importieren Sie android.content.pm.Signature; Importieren Sie android.util.Base64; Import android.util.Log; – Alireza

1

keytool -exportcert -alias androiddebugkey -keystore "debug.keystore Weg" | openssl sha1 -binär | openssl base64

wenn Sie nicht Umgebungskonfiguration Variablen für offene ssl und Java SDK als jdk Bin Ordnerpfad anstelle von keytool und OpenSSL Pfad anstelle von OpenSSL setzen und nicht zu vergessen, doppelten Anführungszeichen für Ihren Weg zu bringen

ex "C: \ Programme \ Java \ jdk1.5.0_11 \ bin" -exportcert -alias androiddebugkey -keystore "C: \ Benutzer \ amin.android \ debug.keystore" | "F: \ openssl \ binsha1 \ openssl.exe" -binär | "F: \ openssl \ binsha1 \ openssl.exe“base64

3
/** 
    * Generates the hash key used for Facebook console to register app. It can also be used for other sdks) Method copied from: https://developers.facebook.com/docs/android/getting-started/ 
    */ 
    public static String printHashKey(Context ctx) { 
     // Add code to print out the key hash 
     try { 
      PackageInfo info = ctx.getPackageManager().getPackageInfo(ctx.getPackageName(), PackageManager.GET_SIGNATURES); 
      for (Signature signature : info.signatures) { 
       MessageDigest md = MessageDigest.getInstance("SHA"); 
       md.update(signature.toByteArray()); 
       return Base64.encodeToString(md.digest(), Base64.DEFAULT); 
      } 
     } catch (NameNotFoundException e) { 
      return "SHA-1 generation: the key count not be generated: NameNotFoundException thrown"; 
     } catch (NoSuchAlgorithmException e) { 
      return "SHA-1 generation: the key count not be generated: NoSuchAlgorithmException thrown"; 
     } 

     return "SHA-1 generation: epic failed"; 
    } 
1

Ein Brute-Force-Option ist nur voran gehen und versuchen, etwas von Ihrer App zu teilen. Meine App zeigt dann eine Facebook-Seite mit dem Schlüssel es versucht. übereinstimmen Dann können Sie einfach kopieren diese Schlüssel und legen sie sie in Ihrem Facebook-Seite ‚Einstellungen‘ auf dem Entwickler Facebook-Account.

Nicht ideal, aber im Notfall kann es hilfreich sein.

2

wenn im Protokoll mit dem Fehler, wenn sie versuchen, um sich einzuloggen Facebook, suchen Sie nach etwas, das wie folgt aussieht:

Invalid key hash. The key hash *** does not match any stored key hashes. Configure your app key hashes at http://developers.facebook.com/apps/565561836797777 

wobei "***" der Schlüssel ist, den Sie verwenden müssen.