Znajdź skrót klucza dla podpisanej aplikacji

Podpisałem swoją aplikację i wyeksportowałem ją do folderu na pulpicie o nazwie aplikacja w tym folderze jest moja aplikacja i keystore. Jak znaleźć klucz hash, który mogę skopiować na stronie deweloperów facebook. mam zainstalowany OpenSSL ale cant wydaje się generować klucz hash próbowałem wiele innych wątków na stosie i żaden nie wydawał się pomóc, dzięki

Jakub

Author: James, 2011-04-27

7 answers

  1. powinieneś wiedzieć, gdzie jest Twój plik keystore. Dla mnie jest C:\Users\Selvin\Desktop\selvin.kp
  2. powinieneś znać swój pseudonim w keystore. For me is selvin
  3. powinieneś znać ścieżkę do keytool. C:\Program Files\Java\jdk1.6.0_22\bin\keytool.exe
  4. powinieneś znać ścieżkę do openssl. C:\OpenSSL-Win32\bin\openssl.exe
  5. powinieneś znać hasło do keystore. Dla mnie jest * * * * * hehe [9]}

Wtedy powinieneś zadzwonić:

C:\Program Files \ Java \ jdk1.6. 0_22 \ bin\keytool.exe " - exportcert - alias selvin-keystore c:\users\selvin\desktop\selvin.kp | C:\OpenSSL-Win32\bin\openssl sha1-binary | C:\OpenSSL-Win32\bin\openssl base64

Zastąp moją ścieżkę i alias odpowiednimi.

To powinieneś zobaczyć:

Wpisz hasło keystore:

Wprowadź hasło, a powinieneś otrzymać coś takiego: NfhDlIH7XWJzUZRjL+pZySrMX1Q=

Edytowane: NfgDlIG7XWJzUZRUL+bZySrMX1Q=

Error: keytool error: java.lang.Wyjątek: Alias nie istnieje

Jeśli hash nie działa:

Najpierw zadzwoń

C:\Program Files \ Java \ jdk1.6. 0_22 \ bin\keytool.exe " - exportcert - alias selvin-keystore c:\users\selvin\desktop\selvin.kp

Wpisz hasło i odczytaj błąd

Jeśli nie pamiętasz swojego aliasu {[6] } użyłem selvinna, aby pokazać błąd.

Dla listy wszystkich Twoich wpisów/aliasów:

C:\Program Files \ Java \ jdk1.6. 0_22 \ bin\keytool.exe-list - keystore c:\users\selvin\desktop\selvin.kp

Druga edycja

Tutaj wpisz opis obrazka

 48
Author: Selvin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-19 03:02:03

Dla tych, którzy wciąż walczą, odkryłem, że te kroki, gdy są poprawnie wykonane, z pewnością zadziałają, ale mogą być dość trudne, aby uzyskać prawo za pierwszym razem, a właściwie odkryłem, że czasami konwersja linii papilarnych base64 podczas czynienia z jakimś aliasem " nie działa (hash zostaje obcięty z jakiegoś powodu). Napisałem Różne pliki wsadowe, które ściągają większość tych instrukcji już wymienionych razem, więc nie wykluczam problemu.

Jednak, zasadniczo większość ludzi upada na etapie OpenSSL (albo nie może go znaleźć, nie wie jak go użyć, albo Orurowanie systemu Windows nie łączy poprawnie wyjścia z eksportu SHA1 do wejścia konwersji base64).

Aby to obejść, możesz użyć alternatywnej metody, która prawdopodobnie jest łatwiejsza do naśladowania i zrozumienia. Zasadniczo to, czego chce facebook API, to reprezentacja base64 (kodowanie) hasha SHA1 używanego do odcisków palców twojego APK. Aby to zrobić, możesz po prostu wymienić keystore:

"C:\Program Files\Java\JRE6\Bin\keytool.exe" -list -v -keystore "Path-to-your-keystore" -storepass "KeystorePassword" > somefile.txt

Oczywiście musisz zmienić ścieżkę do pliku wykonywalnego keytool zgodnie z własną konfiguracją i zastąpić "Path-to-your-keystore" i "KeystorePassword" ścieżką do keystore i hasłem! Wynikiem powinno być utworzenie pliku " sometext.txt" w bieżącym folderze, który można następnie otworzyć w dowolnym edytorze tekstu. Plik tekstowy wyświetli wszystkie aliasy keystore ' i ich odpowiednie skróty MD5 I SHA1 jako ciąg szesnastkowy.

Teraz wystarczy znaleźć alias używany do podpisz APK, skopiuj hash SHA1 i użyj dowolnego online hex do konwertera base64, aby przekonwertować go do formatu kodowania base64, którego wymaga facebook. Możesz znaleźć konwerter online, googlując "online hex to base64 converter". Używałem Ten , ponieważ możesz po prostu skopiować i wkleić ciąg bezpośrednio z pliku tekstowego do podanego pola, a to po prostu usunie dwukropki, które oddzielają każdy bajt szesnastkowy.

Jeden ostatni punkt (nieco oczywisty, ale..) tylko skopiuj i wklej hex string, a nie przedrostek SHA1:!

Mam nadzieję, że to komuś pomoże; to na pewno działa dla mnie!

 21
Author: sriggall,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-05 10:31:35

Najpierw chciałbym podziękować Selvinowi!

Ta odpowiedź jest prawie identyczna z odpowiedzią Selvina, ale i tak Zajęło mi 3 godziny, aby ją uruchomić: P więc trochę więcej tutoriala dla prawdziwych newbów

Jak uzyskać hashKey z keystore

  • najpierw zainstaluj OpenSSL z google code i umieść go w folderze C:\ download link
  • Znajdź lokalizację programu keytool (domyślnie w Javie folder)
  • find keystore location (istnieje domyślna opcja debugowania wartość)

Location keytool C:\Program Files (x86) \ Java\jdk1.xxx) \ bin\keytool lokalizacja openssl C:\OpenSSL-Win32\bin\OpenSSL lokalizacja (debug)keystore C:\Users [usernamepc].Android\debug.keystore

Otwórz cmd w windows (start->run- > cmd) i przejdź do lokalizacji keytool lub skopiuj wklej następujący ciąg znaków, zauważ, że nie możesz użyć ctrl + v, ale kliknij prawym klawiszem myszy

cd c:\program files (x86)\java\jdk1.7.0_01\bin

Gdy w prawym katalogu wklejamy ten ciąg w cmd linia:

keytool.exe -exportcert -alias androiddebugkey -keystore c:\users\charx\.android\debug.keystore | C:\OpenSSL-Win32\bin\openssl sha1 -binary | C:\OpenSSL-Win32\bin\openssl base64

"C:\OpenSSL-Win32\bin\openssl" jest ścieżką OpenSSL.exe zastąp go OpenSSL.ścieżka exe

Upewnij się, że zmienisz [usernamepc] swojego do nazwy komputera, jak widać w moim przypadku to charx. Również katalog java JDK xxxx zależy od twojej wersji.

Cmd powinien pokazywać hashkey

Klucz Hashowy dla mojego pliku debugowania to

h1GdQbgB8b/liCG+acmZWkgIRHA=
 14
Author: EvertvdBraak,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-22 12:36:11

Rozwiązanie z Eclipse (dla leniwych ludzi takich jak ja).

Wybierz dowolny projekt w Eclipse, Eksportuj-aplikację Android, wprowadź swój klucz pass itp. a na ostatniej stronie na dole zobaczysz MD5: .... SHA1:...

Skopiuj łańcuch SHA1 i wklej go do dowolnego konwertera HEX-Base64 online (na przykład ten: http://tomeko.net/online_tools/hex_to_base64.php )

Gratulacje! Masz klucz hash potrzebny do Facebook dev Console.

 9
Author: QuiteSimple,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-10 13:27:43

Powyższe rozwiązania nie działały dla mnie z jakiegoś powodu, ale udało mi się z powodzeniem wygenerować keyhash. Piszę 10 najprostszym krokiem, aby uzyskać keyhash podpisanego apk [apk podpisany z keystore]:

  1. Skopiuj poniższy kod do swojego activity [start Activity].Ten kod powinien być zawarty w Twojej aktywności, abyś mógł wyodrębnić właściwy klucz klucza, gdy rozpocznie się aktywność podpisanego pliku apk.

    private void getHashKey() {
    try {
        PackageInfo info = getPackageManager().getPackageInfo(
                getPackageName(), 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) {
    } }
    
  2. Twój plik AndroidManifest.xml powinien mieć atrybut android:allowBackup="true" w znaczniku aplikacji.

  3. Eksportuj podpisany apk i zainstaluj aplikację w telefonie komórkowym, a następnie podłącz telefon w trybie debugowania za pomocą usb debugging on.

  4. Następnie przejdź do sdk\platform-tools

  5. Otwórz wiersz polecenia i wpisz adb devices, aby sprawdzić, czy urządzenie jest podłączone, czy nie. jeśli urządzenie nie jest wymienione, spróbuj rozwiązać ten problem przed przejściem do następnego kroku.

  6. Następnie wpisz adb logcat >"log.txt". Twój cmd ekran spodoba się powieszeniu. Nie Panikuj. Its Zupełnie normalne, ponieważ cały logcat jest zapisywany do log.txt.

  7. Uruchom aplikację i miejmy nadzieję, że kiedy myślisz, że getHashKey() funkcja jest wykonywana, a następnie naciśnij ctrl+c w wierszu polecenia, aby zakończyć Zapisywanie pliku dziennika.

  8. Teraz wiersz polecenia stanie się ponownie responsywny. Teraz idź do twój sdk\platform-tools dir i zobaczysz, że dziennik.plik txt został utworzony, który zawiera logi.

  9. Teraz otwórz go w texteditor i wyszukaj MY_KEY_HASH:"-----------Twój keyhash-------"

  10. skopiuj to na swoje FB account lub tam, gdzie tego potrzebujesz, a następnie stwórz kolejną kompilację, w której funkcja android:allowBackup="false" i getHashKey() jest usunięte.

Mam nadzieję, że to pomogło wszystkim:)

 4
Author: Sheraz Ahmad Khilji,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-26 17:47:43

Nie mogłem się tym wszystkim przejmować widzę co Facebook sdk faktycznie wysyła przez eksportowanie mojej podpisanej aplikacji z kodem tymczasowym w miejscu, aby wyświetlić Błąd facebook.toString() W autoryzacji, która daje klucz hash jego szuka i następnie umieścić to w mojej aplikacji facebook i bingo !

 3
Author: rich,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-10 20:35:36

Jeśli używasz swoich alies użyj tego polecenia, aby znaleźć keystore alies

Keytool-list-v-keystore keystore.jks / findstr "Alias Creation"

 0
Author: Uditha Prasad,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-17 14:19:09