2012-04-06 21 views
6

W Facebooka android tutorialu dowiadujemy się użyć następującego kodu, aby utworzyć klucz hash:Jak utworzyć hash klucza Facebook?

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

Czy to jest dokładny kod do użycia we wszystkich sytuacjach? Na przykład zamiast ~/.android/debug.keystore powinno to być coś takiego jak C:/folderone/foldertwo/.android/debug.keystore?

Jak widać, nie jestem pewien, czy wymagane są przecinki odwrócone, czy wymagane są pełne ścieżki, czy nie!

Czy ktoś jest w stanie podać przykład z prawdziwego świata?

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

+0

trzeba mieć OpenSSL z google ... wykonaj czynności podane w [LINK] [1] [1]: http://stackoverflow.com/questions/4388992/key-hash- for-android-facebook-app/6665263 # 6665263 –

+0

Możesz zobaczyć prawdziwy przykład tutaj http://stackoverflow.com/questions/9977492/android-facebook-sdk-keystore-not-asking-or-password/10026147#10026147 – dimetil

+0

Odpowiedź powinna znaleźć odpowiedź Avi [tutaj.] (Http://stackoverflow.com/a/6665263/5861880) – abosamy

Odpowiedz

2

w Eclipse, okienne ->preferencje ->Android ->build ->domyślne debugowania kluczy, skopiuj ścieżkę zastąpić ~/.android/debug.keystore

11

Możesz utworzyć w ten sposób

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

Wpisz hasło magazynu kluczy: Android

+0

Link jest martwy – larham1

+0

Niewielkie zmiany tutaj. Po pierwsze, jeśli twój plik openssl.exe nie znajduje się w PATH, nie będziesz mógł go wywołać w ten sposób (to samo dotyczy keytool). Po drugie, ostatnia część to "openssl base64". – Asim

+0

MacOS: keytool -exportcert -alias androiddebugkey -keystore ~ ​​/ .android/debug.keystore | openssl sha1 -binary | openssl base64 Hasło: android –

1

Miałem ten sam problem, spędzić kilka godzin, aby znaleźć rozwiązanie, ale faktycznie Facebook SDK dostarcza rozwiązanie samo w sobie.

w klasie DialogListener I zmodyfikowane metody onFacebookError:

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

Uruchom aplikację (który był znak z tego samego klucza używać do rynku), a na LogCat będzie wiadomość pod tym tag właściwy klucz.

Stworzyliśmy również prosty projekt, który wykonuje całą pracę i zwraca poprawny klucz w okienku ostrzeżeń i na LogCat. Możesz go znaleźć na our blog.

16

spróbować

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

} 

w swojej głównej działalności :-) To jedyne rozwiązanie to działa dla mnie Android SDK 3.0

+1

Zawarte niezbędne: import android.content.pm.PackageInfo; importować android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.Signature; importować android.util.Base64; importować android.util.Log; – Alireza

1

keytool -exportcert -alias androiddebugkey -keystore "ścieżka debug.keystore" | openssl sha1 -binary | openssl base64

jeśli nie masz zmienne środowiskowe konfiguracja otwartego SSL oraz Java SDK niż umieścić ścieżkę folderu bin JDK w miejscu keytool i ścieżkę openssl zamiast OpenSSL, a nie zapomnij umieścić cudzysłów na swojej drodze

ex- "C: \ Program Files \ Java \ jdk1.5.0_11 \ bin" -exportcert -alias androiddebugkey -keystore "C: \ Users \ amin.android \ debug.keystore" | "F: \ openssl \ binsha1 \ openssl.exe" -binary | "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

Jedną z opcji brute force jest po prostu iść do przodu i spróbować podzielić się czymś z aplikacji. Moja aplikacja następnie wyświetla stronę na Facebooku z kluczem stara się dopasować. Następnie można po prostu skopiować to klucz i umieścić go na stronie serwisu Facebook „Ustawienia” na dewelopera konta Facebook.

Nie idealne, ale w kropce może być pomocne.

2

kiedy o błędzie w dzienniku, gdy próbuje się zalogować do Facebook, szukaj czegoś, co wygląda:

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 

gdzie "***" jest kluczem, którego należy użyć.