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

StackOverflow https://stackoverflow.com/questions/5803944

Вопрос

Я подписал свое приложение и экспортировал его в папку на своем рабочем столе, называемом приложением в этой папке, является моим приложением и хранилищем ключей. Как мне найти ключевой хэш, который я могу скопировать на странице разработчиков Facebook. У меня установлен OpenSSL, но, кажется, не могу генерировать ключевой хеш, который я пробовал много других потоков в стеке, и ни один из них не помог, спасибо

Джеймс

Это было полезно?

Решение

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

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

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=

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

Ошибка: keytool Ошибка: 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

Другие советы

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

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

Чтобы обойти это, вы можете использовать альтернативный метод, за которым, вероятно, легче следовать и понять. По сути, то, чего хочет 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 в соответствии с вашей собственной настройкой, а также заменить «Путь к своему» и «KeyStorPassword» на путь и пароль! Результатом должно быть создание файла «sometext.txt» в текущей папке, которую вы затем можете открыть в любом текстовом редакторе. В текстовом файле перечислены все псевдонимы Cower Store 'и их соответствующие хэши MD5 и SHA1 в виде шестигранных строк.

Теперь просто найдите псевдоним, используемый для подписи вашего APK, скопируйте хэш SHA1 и используйте любой онлайн -шестнадцатеричный конвертер Base64, чтобы преобразовать его в формат кодирования BASE64, который требуется Facebook. Вы можете найти онлайн -конвертер, Googlling "Online Hex to Base64 Converter". Я использовал Вот этот Как вы можете просто скопировать и вставить строку прямо из текстового файла в приведенный поле, и она просто удалит колоны, которые разделяют каждый шестигранный байт.

Один последний пункт (несколько очевиден, но ...) только скопируйте и вставьте шестнадцатеричную строку, а не SHA1: PREFIX!

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

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

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

Как получить гашки из магазина ключей

  • Сначала установите OpenSSL из кода Google и поместите его в свою папку C:ссылка на скачивание
  • Найти местоположение программы Keytool (по умолчанию в папке Java)
  • Найти местоположение магазина ключей (есть значение отладки по умолчанию)

Расположение KeyTool C: Program Files (x86) java jdk1.xxx) bin location openssl c: openssl-win32 bin openssl location (отладка) Store C: users [usernamepc] .Android отладка. Ключевой магазин

Откройте CMD в Windows (start-> run-> cmd) и перейдите в местоположение KeyTool или копируйте вставьте следующую строку, обратите внимание, что вы не можете использовать Ctrl+V, но правый 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 должен показать обширку

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

h1GdQbgB8b/liCG+acmZWkgIRHA=

Решение с затмением (для таких ленивых людей, как я).

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

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

Поздравляю! У вас есть ключевой хэш, необходимый для консоли Dev Facebook.

Упомянутые выше решения по какой -то причине не работали, но я смог успешно генерировать KeyHash. Я пишу 10 самых простых шагов, чтобы получить Keyhash вашего подписанного APK APK подписан с помощью магазина ключей:

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

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

  4. Тогда иди sdk\platform-tools

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

  6. Затем тип adb logcat >"log.txt". Анкет Ваш cmd Экран будет любить повесить. Не паникуйте. Это совершенно нормально, так как весь логкат пишет log.txt.

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

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

  9. Теперь откройте его в texteditor и искать MY_KEY_HASH:"----------- Ваш KeyHash -------"

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

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

Меня не мог беспокоить все это, я вижу, что на самом деле отправляет SDK Facebook, экспортируя мое подписанное приложение с температуром на месте, чтобы отобразить ошибку Facebook.toString () в авторизации, который дает хэш -ключ, который он ищет, я тогда вкладываю в свой Приложение Facebook и бинго!

Если вы используете свою эли, используйте эту команду, чтобы найти Alies Store Chow

KeyTool -list -v -KeyStore KeyStore.jks | Findstr "Создание псевдонимы"

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top