Подтвердить что ты не робот

Найти ключевой хэш для подписанного приложения

Я подписал свое приложение и экспортировал его в папку на моем рабочем столе под названием app в этой папке - это мое приложение и хранилище ключей. Как найти ключевой хэш, который я могу скопировать на страницу разработчиков facebook. У меня есть openssl, но can not, похоже, генерирует ключевой хеш файл, который пробовал много других потоков в стеке, и ни один из них не помог, спасибо

Джеймс

4b9b3361

Ответ 1

  • Вы должны знать, где находится ваш файл хранилища ключей. Для меня C:\Users\Selvin\Desktop\selvin.kp
  • Вы должны знать свой псевдоним в хранилище ключей. Для меня есть selvin
  • Вы должны знать путь к keytool. C:\Program Files\Java\jdk1.6.0_22\bin\keytool.exe
  • Вы должны знать путь к openssl. C:\OpenSSL-Win32\bin\openssl.exe
  • Вы должны знать пароль в хранилище ключей. Для меня ***** hehe

Затем вы должны позвонить:

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

Замените мой путь и псевдоним правильными.

Затем вы должны увидеть:

Введите пароль хранилища ключей:

Введите свой пароль, и вы должны получить что-то вроде этого: NfhDlIH7XWJzUZRjL+pZySrMX1Q=

EDITED: NfgDlIG7XWJzUZRUL+bZySrMX1Q= < - - плохой хеш. Или вам повезло, что ваш ключ сделал такое же столкновение, как

error: keytool error: java.lang.Exception: псевдонима не существует

Если хеш не работает:

Сначала вызовите

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

Введите пароль и прочитайте сообщение об ошибке

Если вы не помните свой псевдоним keytool error: java.lang.Exception: Alias <selvinn> does not exist, я использовал selvinn для отображения ошибки.

Список всех ваших записей/псевдонимов:

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

второе редактирование

enter image description here

Ответ 2

Для тех, кто все еще борется, я обнаружил, что эти шаги, если следовать правильно, будут работать, но они могут быть довольно сложными, чтобы получить право в первый раз, и на самом деле я обнаружил, что иногда базовое преобразование отпечатка пальца при работе с некоторым псевдонимом ' не работают (хеш усекается по какой-то причине). Я написал несколько пакетных файлов, которые вытаскивают большинство этих инструкций, упомянутых вместе, поэтому я не исключаю там проблему.

Тем не менее, по сути, большинство людей падают на этапе opensl (либо не могут найти его, не знают, как его использовать, либо Windows-конвейер неправильно связывает вывод экспорта SHA1 с базовым преобразованием ввода).

Чтобы обойти это, вы можете использовать альтернативный метод, который, вероятно, легче понять и понять. По сути, что требуется API facebook, это представление base64 (кодирование) хэш SHA1, используемое для отпечатки вашего APK. Для этого вы можете просто перечислить хранилище ключей:

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

Очевидно, вам нужно изменить путь к исполняемому файлу keytool в соответствии с вашей собственной настройкой и заменить "Path-to-your-keystore" и "KeystorePassword" на ваш путь и пароль к хранилищу ключей! Результатом должно быть создание файла "sometext.txt" в текущей папке, который затем можно открыть в любом текстовом редакторе. В текстовом файле будут перечислены все псевдонимы хранилища ключей и их соответствующие хеши MD5 и SHA1 в виде шестнадцатеричных строк.

Теперь просто найдите псевдоним, используемый для подписи вашего APK, скопируйте хэш SHA1 и используйте любой конвертер в формате hex для base64, чтобы преобразовать его в формат кодировки base64, который требуется facebook. Вы можете найти онлайн-конвертер с помощью googling онлайн-конвертера base64. Я использовал this one, поскольку вы можете просто скопировать и вставить строку прямо из текстового файла в поле и он просто удалит двоеточия, которые разделяют каждый шестнадцатеричный байт.

Один последний момент (несколько очевидный, но..) только скопируйте и вставьте шестую строку и НЕ SHA1: префикс!

Надеюсь, это поможет кому-то; это, безусловно, работает для меня!

Ответ 3

Сначала я хотел бы поблагодарить Селвина!

Этот ответ почти идентичен ответу Selvin, но мне все же потребовалось 3 часа, чтобы заставить его работать: P так немного больше учебника для настоящих новичков

Как получить hashKey из хранилища ключей

  • сначала установите OpenSSL из кода google и поместите его в папку C: \ ссылка для скачивания
  • найти местоположение программы keytool (по умолчанию в java папка)
  • найти местоположение хранилища ключей (есть значение по умолчанию для отладки)

location keytool C:\Program Files (x86)\Java\jdk1.xxx)\bin\keytool location openssl C:\OpenSSL-Win32\bin\OpenSSL местоположение (отладка) keystore C:\Users [usernamepc].android\debug.keystore

откройте cmd в окнах (start- > run- > cmd) и перейдите в местоположение keytool или скопируйте вставьте следующую строку, обратите внимание, что вы не можете использовать ctrl + v, но right mouseclick

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

когда в правом каталоге вставьте эту строку в строку cmd:

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" - это путь для opensssl.exe, замените его на путь openssl.exe

убедитесь, что вы изменили [usernamepc] вашего имени на ваш компьютер, как вы можете видеть в моем случае его charx. Также каталог java jdk xxxx зависит от вашей версии.

cmd должен показать hashkey

хэш файл для моего файла отладки

h1GdQbgB8b/liCG+acmZWkgIRHA=

Ответ 4

Решение с Eclipse (для ленивых людей вроде меня).

Выберите любой проект в Eclipse, Export - Android Application, введите свой ключ и т.д., а на последней странице внизу вы увидите MD5:.... SHA1:....

Скопируйте строку SHA1 и вставьте ее в любой онлайн-конвертер HEX-Base64 (например, этот: http://tomeko.net/online_tools/hex_to_base64.php)

Congrats! У вас есть ключевой хеш для Facebook Dev Console.

Ответ 5

Я не мог беспокоиться обо всем этом, я вижу, что на самом деле отправка sks в facebook экспорт моего подписанного приложения с временным кодом для отображения facebook error.toString() в Authorize, который дает хэш-ключ, который он ищет, я тогда помещаю это в свое приложение для Facebook и бинго!

Ответ 6

Вышеупомянутые решения по какой-то причине не работали, но я смог успешно генерировать keyhash. Я пишу 10 простых шагов для получения keyhash вашего подписанного apk [apk, подписанного с хранилищем ключей]:

  • Скопируйте приведенный ниже код в свой activity [start Activity]. Этот код должен содержаться в вашей деятельности, чтобы вы могли извлечь нужную клавиатуру, когда начнется ваша подписанная операция 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) {
    } }
    
  • В вашем теге AndroidManifest.xml должен быть атрибут android:allowBackup="true".

  • Экспортируйте подписанный apk и установите приложение на свой мобильный телефон, а затем подключите свой телефон в режиме отладки с помощью usb debugging on.

  • Затем перейдите к sdk\platform-tools

  • Откройте командную строку и введите adb devices, чтобы узнать, подключено ли ваше устройство или нет. если устройство не указано, попробуйте исправить эту проблему, прежде чем перейти к следующему шагу.

  • Затем введите adb logcat >"log.txt". Ваш экран cmd понравится повешенному. Не паника. Его Совершенно нормально, поскольку весь logcat записывается в log.txt.

  • Запустите приложение и, надеюсь, когда вы думаете, что getHashKey() , затем нажмите ctrl+c в командной строке, чтобы завершить запись файла журнала.

  • Теперь командная строка снова начнет реагировать. Теперь перейдите в ваш sdk\platform-tools dir, и вы увидите, что файл log.txt , который содержит журналы.

  • Теперь откройте его в texteditor и выполните поиск MY_KEY_HASH: "----------- Your keyhash -------"

  • Скопируйте это на свой FB account или если вам это нужно, а затем создайте еще одну сборку, в которой функции android:allowBackup="false" и getHashKey()  удалены.

Надеюсь, это помогло всем:)

Ответ 7

если вы используете своих союзников, используйте эту команду, чтобы найти keystore alies

keytool -list -v -keystore keystore.jks | findstr "Alias ​​Creation"