Ключевой хэш для приложения Android-Facebook - PullRequest
219 голосов
/ 08 декабря 2010

Я работаю над приложением для Android, в которое хочу интегрировать функцию публикации в Facebook.Я скачал Facebook-Android SDK и получил там readme.md (текстовый файл), в котором упоминается, что он генерирует хэш ключа для Android.Как мне его сгенерировать?

Ответы [ 25 ]

305 голосов
/ 12 июля 2011

Вот шаги -

  1. Скачать openssl с Google code (Если у вас 64-битная машина, вы должны загрузить openssl-0.9.8e X64 не последняя версия)

  2. Извлеките его. создайте папку - OpenSSL в C: / и скопируйте извлеченный код здесь.

  3. определить путь к файлу debug.keystore. Если вы не нашли, то выполните поиск в C: / и используйте путь в команде на следующем шаге.

  4. определить ваш путь к keytool.exe и перейти в командную строку dir / in и запустить эту команду в 1 строке-

    $ keytool -exportcert -alias androiddebugkey -keystore "C: \ Documents and Settings \ Administrator.android \ debug.keystore" | "C: \ OpenSSL \ bin \ openssl" sha1 -binary | "C: \ OpenSSL \ bin \ openssl" base64

    • попросит пароль, поставь андроид
    • вот и все. ты получишь хэш ключа
    1036 **

Для получения дополнительной информации посетите здесь

226 голосов
/ 07 марта 2012

Вы можете использовать этот код в любой деятельности. Он будет регистрировать хеш-ключ в logcat, который является ключом отладки. Это легко и облегчает использование SSL.

PackageInfo info;
try {
    info = getPackageManager().getPackageInfo("com.you.name", PackageManager.GET_SIGNATURES);
    for (Signature signature : info.signatures) {
        MessageDigest md;
        md = MessageDigest.getInstance("SHA");
        md.update(signature.toByteArray());
        String something = new String(Base64.encode(md.digest(), 0));
        //String something = new String(Base64.encodeBytes(md.digest()));
        Log.e("hash key", something);
    }
} catch (NameNotFoundException e1) {
    Log.e("name not found", e1.toString());
} catch (NoSuchAlgorithmException e) {
    Log.e("no such an algorithm", e.toString());
} catch (Exception e) {
    Log.e("exception", e.toString());
}

Вы можете удалить код, узнав ключ;)

132 голосов
/ 18 июля 2013

Я создал небольшой инструмент для Windows и Mac OS X. Просто добавьте файл хранилища ключей и получите хеш-ключ.

Если вам нужен файл debug.keystore по умолчанию, используйте псевдоним и пароль по умолчанию. В противном случае используйте свой собственный файл хранилища ключей и значения.

Проверьте, загрузите версию для Windows или загрузите версию для Mac OS X (Dev-Host иногда может быть недоступен ... поэтому, если ссылка не работает, напишите мне в личку, и я исправлю это).

Надеюсь, это поможет вам, ребята ...

31 декабря 2014 г. - РЕДАКТИРОВАТЬ: Поменял хост на AFH. Пожалуйста, дайте мне знать, если ссылки не работают

21 ноября 2013 г. - РЕДАКТИРОВАТЬ:

По запросу пользователей, я добавил расположение хранилища ключей по умолчанию и кнопку DONATE. Не стесняйтесь использовать его , если я вам помог. :)

Screen shot Screen shot 2

60 голосов
/ 27 сентября 2011

Инструкции, которые в настоящее время содержатся в Учебник по Android для Facebook , плохо работают в Windows . Их пример показывает, как передать вывод keytool в openssl, но если вы попробуете это под Windows, то вывод по какой-то причине недопустим. Я обнаружил, что мне пришлось использовать промежуточные файлы, чтобы заставить его работать должным образом. Вот шаги, которые работали для меня:

Начните с загрузки openssl для Windows из Google.

C:\Users\Me>keytool -exportcert -alias my_key -keystore my.keystore -storepass PASSWORD > mycert.bin

C:\Users\Me>openssl sha1 -binary mycert.bin > sha1.bin

C:\Users\Me>openssl base64 -in sha1.bin -out base64.txt

После выполнения этих команд действительный хеш сохраняется в файле base64.txt. Скопируйте и вставьте это в настройки своего приложения на Facebook.

47 голосов
/ 19 марта 2012

Это то, что указано на официальной странице Facebook :

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

Позвольте мне разбить эту команду на фрагменты.

  1. Ищите "keytool.exe". Вы можете найти это на диске C :. Вы можете найти его в "java jdk" или "java jre". Если вы установили несколько версий, выберите любую.

  2. Откройте приглашение CMD и перейдите в указанный выше каталог, в котором вы нашли "keytool.exe".

    Отрежьте "exe`" и вставьте указанную выше команду, представленную на странице Facebook.

  3. При вводе вы получите сообщение об ошибке, что OpenSSL не распознается как команда ввода-вывода. Решение: Загрузите Openssl из OpenSSL (если у вас 64-битная машина, вы должны загрузить openssl-0.9.8e X64 ). Извлеките и сохраните его где угодно ... Я сохранил его на диске C: в папке OpenSSl

  4. Замените openssl в приведенной выше команде, в которой вы получали ошибку OpenSSL, на "C: \ OpenSSL \ bin \ openssl" в обоих местах после канала, "|".

  5. При запросе пароля введите android.

И вы получите свой хэш-ключ. Для дальнейших шагов, снова обратитесь к странице Facebook.

32 голосов
/ 15 января 2013

Добавьте этот код к onCreate вашей активности, он напечатает хеш под тегом KeyHash в вашем logCat

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

}
catch (NoSuchAlgorithmException e) {

}

Вы можете добавить несколько хеш-ключей для своей учетной записи, поэтому, если вы работали в режиме отладки , не забудьте запустить это снова в режиме выпуска .

23 голосов
/ 15 июля 2012

Чтобы получить хэш-код ключа Android, выполните следующие действия:

  1. Загрузить OpenSSL для Windows здесь
  2. Теперь разархивируйте на диск C
  3. Откройте приглашение CMD
  4. Введите cd C:\Program Files\Java\jdk1.6.0_26\bin
  5. Затем введите только keytool -export -alias myAlias -keystore C:\Users\ Ваше имя пользователя \.android\myKeyStore | C:\openssl-0.9.8k_WIN32\bin\openssl sha1 -binary | C:\openssl-0.9.8k_WIN32\bin\openssl enc -a -e
  6. Готово
15 голосов
/ 24 апреля 2012

Самое простое решение, которое я нашел, это:

  • Откройте Log Cat
  • Попробуйте получить доступ к Facebook с помощью Android SDK
  • Найдитестрока в журнале, которая выглядит следующим образом:

    04-24 01:14:08.605: I/System.out(31395): invalid_key:Android key mismatch. 
    Your key "abcdefgHIJKLMN+OPqrstuvwzyz" does not match the allowed keys specified in your
    application settings. Check your application settings at 
    http://www.facebook.com/developers
    
  • Скопируйте «abcdefgHIJKLMN + OPqrstuvwzyz» и вставьте его в область «Хеш-ключ» Facebook Android.

13 голосов
/ 07 октября 2015

Я сделал таким образом для ОС Linux & ОС Windows :

Linux:

  • Загрузить Openssl
  • Открыть терминал
  • keytool -exportcert -alias **myaliasname** -keystore **/home/comp-1/Desktop/mykeystore.jks** | openssl sha1 -binary | openssl base64

Пожалуйста, измените Имя псевдонима и Склад ключей с указанием пути в соответствии с вашими требованиями.

Терминал будет запрашивать для Пароль Keystore.Вы должны предоставить пароль для того же хранилища ключей .

Итак, в конце концов вы получите Release Hashkey .

Windows:

Шаги для Выпуск Hashkey :

  • Загрузить Openssl (Загрузить с здесь ), я скачалдля 64 бит ОС вы можете найти больше здесь
  • Извлечь загруженный zip-файл в C: \ drive only
  • Открыть командную строку
  • keytool -exportcert -alias **myaliasname** -keystore **"C:\Users\hiren.patel\Desktop\mykeystore.jks"** | "C:\openssl-0.9.8e_X64\bin\openssl.exe" sha1 -binary | "C:\openssl-0.9.8e_X64\bin\openssl.exe" base64

Пожалуйста, измените Имя псевдонима и Keystore с указанием пути как ваше требование.

Примечание:

Пожалуйста, укажите свои данные там, где я отметил, между ** **.

Терминал будет запрашивать для Пароль из Keystore.Вы должны предоставить пароль для того же Keystore .

Итак, в конце концов вы получите Release Hashkey .

Готово

11 голосов
/ 27 сентября 2016
  • скачать openSSL для Windows здесь Вы можете найти 64-битные и 32-битные здесь

  • извлечь загруженный файл

  • создать имя папки openSSL на диске C
  • скопировать все извлеченные элементы в папку openSSL (bin, include, lib, openssl.cnf)
  • получить хранилище ключей отладки Android, расположение по умолчанию будет

C: \ Users \ имя пользователя \ .android \ debug.keystore

  • теперь получите командную строку и вставьте этот код

keytool -exportcert -alias androiddebugkey -keystore C: \ Users \ username.android \ debug.keystore | "C: \ openSSL \ bin \ openssl" sha1 -binary | "C: \ openSSL \ bin \ openssl" base64

  • нажмите Enter, и вы получите 28-значный код ключа
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...