Ключовий хеш для програми Android-Facebook


229

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


2
ви можете перевірити це посилання javatechig.com/2012/12/10/…
Nilanchal

2
перевірити це Для тих, хто все ще стикається з проблемою,
Chintan Khetiya

Створіть HashKey для налагодження та режиму випуску за допомогою цього. stackoverflow.com/questions/7506392/…
Наем Ібрагім

Щоб отримати ключі, подивіться це відео
Незабаром Сантос,

Відповіді:


310

Ось такі кроки:

  1. Завантажте openssl з коду Google (Якщо у вас 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: \ Документи та налаштування \ Administrator.android \ debug.keystore" | "C: \ OpenSSL \ bin \ openssl" sha1 -binary | "C: \ OpenSSL \ bin \ openssl" base64

    • він запитає пароль, поставить android
    • це все. Ви отримаєте хеш-ключ

Для отримання додаткової інформації відвідайте тут


5
Ця відповідь майже працювала для мене на Win7 x64. Однак отриманий закодований серт був невірним. Відповідь Брайана Бедарда нижче надасть правильне значення cert. Я здогадуюсь, що трубопроводи на вікнах чомусь є винуватцем.
Броня Уолта

10
Примітка для 64-бітних користувачів: це працює з версією openssl-0.9.8e X64, не використовуйте лише для openssl-0.9.8k X64
Nicola Peluchetti

Я завантажив openssl-0.9.8e X64 для своєї системи і витяг її. Він не містить нічого, крім одного файлу з деякими даними. Будь ласка, допоможіть мені знати більше.
Равікіран

2
команда повинна виконуватися в папці bin Java в системах Windows.
Antrromet

1
@HanishSharma Спробуйте відмовитися від $.
заборона-геоінженерія

241

[EDIT 2020] -> Тепер я повністю рекомендую відповідь тут : набагато простіше використовувати Android Studio, швидше і не потрібно викручувати будь-який код - той, що нижче, повернувся в дні затемнення :) -.

Ви можете використовувати цей код у будь-якій діяльності. Він увійде хешкей у 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());
}

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


27
Хлопці, подбайте, після створення apk ключ хеш міняється! тому що, використовуючи цей код, отримайте хеш-зберігання клавіш налагодження, але при створенні apk, це ще один хеш, треба захопити його з журналу після спроби ур apk на емуляторі, потім видаліть код і знову експортуйте без цього журналу :) - я знаю, це клопот: D, але мені було легше, ніж keytool, удачі;)
Бассем Вісса

4
Opensssl завжди створює проблеми. Цей метод є найкращим. Просто створіть порожній додаток і отримайте роздрукований ключ. Спасибі людина !!
AnhSirk Dasarp

1
Це, безумовно, найпростіше рішення. Використовуючи keytoolкоманду, я отримував неправильні хеши ключів (я поняття не маю, чому я вирішив, що я не переймаюся достатньою проблемою). Це спрацювало і буквально знадобилося 5 хвилин, щоб отримати налагодження та звільнення хешей ключів. +1
Chris Cirefice

1
Так, Себастьєн, вам просто потрібно встановити підписаний apk на пристрої, підключити його до андроїд-студії та перевірити журнал-кот, або ви можете показати хеш у редакційному тексті в інтерфейсі та скопіювати його, у будь-якому разі так, хеш, який цей код створює, працює з підписаний apk :)
Бассем Вісса

1
використання клавішного інструменту такий безлад, це дійсно просто
Табіш

135

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

Якщо ви хочете файл за замовчуванням debug.keystore, використовуйте псевдонім і пароль за замовчуванням. Крім того, використовуйте свій власний файл зберігання ключів і значення.

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

Я сподіваюся, що допоможу вам, хлопці ...

31 грудня 2014 р. - EDIT: Змінено хостинг на AFH. Будь ласка, повідомте мене, якщо посилання розірвані

21 листопада 2013 р. - EDIT:

Як просили користувачі, я додав місце зберігання ключів за замовчуванням та кнопку DONATE. Сміливо користуйтеся ним, якщо я вам допомогла. :)

Екран постріл Знімок екрана 2


1
Найкраще. Метод. Колись. Де знаходиться кнопка пожертвування?
Адам Варгегій

1
@ Shahar2k5 Не знаю насправді, почав знову і працював як шарм. Вибачте
Anearion

1
Працює як шарм! Дякуємо, що поділилися :)
Vinayak

1
@Shahar Barsheshet Дякую ти правий. Завантажено з домену Devhost і жодних проблем не виникає.
MajorGeek

1
Я чогось не розумію: чому ваш інструмент дає інший ключ SHA, порівняно з використанням keytoolкомандного рядка? Чи не повинен він створювати однакові результати, якщо застосовувати його до одного і того ж файлу зберігання ключів?
нічний фікс

64

Інструкції, які наразі знаходяться у підручнику Android для Android , не працюють добре під Windows . Їх приклад показує, як передавати висновок keytool до openssl, але якщо ви спробуєте це під Windows, вихід з якихось причин недійсний. Я виявив, що мені потрібно використовувати файли-посередники, щоб змусити його нормально працювати. Ось такі кроки, які працювали для мене:

Почніть з завантаження Google OpenSl для Windows .

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.


Працює ідеально, все інше провалювалося.
Олівер Діксон

2
Що за ПІТА - але Брайан має рацію! Команда виведе хеш майже незалежно від того, неправильний ваш шлях, неправильний пароль, або труби не працюють правильно - ви ВИНАГИ отримаєте HASH, але він не працюватиме. Тож (у Windows) я скинув Powershell і спробував Cygwin - все ще не працює. Лише після копіювання файлу debug.keystore в робочий dir я міг змусити його працювати і працювати !!
Боббі

2
Отже, підсумовуючи, у Windows або використовуйте техніку Брайана, щоб розбити її, або використовуйте cygwin разом із файлом зберігання в робочому режимі: keytool -exportcert -alias androiddebugkey -keystore debug.keystore | openssl sha1 -бінарний | openssl base64 Якщо він не запропонує вам ввести пароль, він не знайшов файл зберігання ключів належним чином.
Боббі

Для мене прекрасно працювали. Чудова відповідь.
Рон

Якщо ви хочете уникати хешей для випадків помилкового пароля, просто перевірте свій mycert.bin, перш ніж продовжувати працювати з openSSL. Інакше ви будете хешировать невірний текст помилки пароля :)
Вайден

50

Ось що подано на офіційній сторінці у 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

Додайте цей код до 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) {

}

Ви можете додати кілька хеш-ключів для свого облікового запису, тому якщо ви працюєте в налагодженні , не забудьте запустити це ще раз у режимі випуску .


чудове рішення, я думаю, не повинно бути виконуваної неподписаної версії? непідписана версія не може встановлюватися на жодному пристрої. Ця версія налагодження підписана налагодженням
keystore

26

Щоб отримати хеш-код для 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. Зроблено

2
Чудова відповідь. Велике спасибі.
Палані Кумар

1
Це для ключа налагодження або для ключа випуску?
ІгорГанапольський

@IgorGanapolsky замість шляху myKeyStoreвкажіть шлях вашого ключа випуску. Наведений вище код для налагодження
Pallavi

17

Найпростіше рішення, яке я знайшов:

  • Відкрити журнал Cat
  • Спробуйте і перейдіть на Facebook за допомогою SDK для Android
  • Шукайте рядок у журналі, який виглядає приблизно так:

    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" та вставте його в область Android Hash Key Hash у Facebook.


це найпростіший та найефективніший спосіб, просто дістаньте його з журналів, навіть не поводячи на них!
Лука C.

це єдине відпрацьоване рішення для мене !. Я не бачу журналу, як ви, але я бачу це KeyHash: XWwXXXXX/5xxxxxxxxxxx=в журналі і допомогло мені!
Ханг Дінь Хоанг

14

Ви можете отримати ключовий хеш із ключа SHA-1. Дуже просто, вам потрібно отримати ключ SHA-1 (підписаний APK) від Play Store, перевірте нижче зображення.введіть тут опис зображення

Тепер скопіюйте цей ключ SHA-1 та вставте його на цей веб-сайт http://tomeko.net, також перевірте зображення нижче, щоб отримати ключ.

введіть тут опис зображення


1
Дякую. Я спробував отримати ключовий хеш за допомогою OpenSSL. На мене пішло 1 хв, і це було легко.
Зелений Ю.

1
Дуже дякую! Це було рішення, коли Google підписує мою програму зараз (я просто використовую сертифікат для завантаження / сховище ключів)
Гаррісон,

13

Я зробив таким чином для ОС Linux та Windows :

Linux:

  • Завантажте Openssl
  • Відкритий термінал
  • keytool -exportcert -alias **myaliasname** -keystore **/home/comp-1/Desktop/mykeystore.jks** | openssl sha1 -binary | openssl base64

Будь ласка, змініть Псевдонім Ім'я та Keystore з його шлях, як ваша вимога.

Термінал буде просити для пароля сховища ключів. Ви повинні вказати пароль для тієї самої Keystore .

Отже, нарешті, ви отримаєте Hashkey Release .

Windows:

Крок до випуску хешкею :

  • Завантажте Openssl (Завантажте звідси ), я завантажив 64-бітну ОС, більше ви можете знайти тут
  • Витягніть завантажений zip-файл лише на C: \ диск
  • Відкрити командний рядок
  • 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 .

Отже, нарешті, ви отримаєте Hashkey Release .

Зроблено


який тут пароль?
Акаш Бісарія

@AkashBisariya, пароль зберігання ключів, який ви вказали під час створення магазину ключів.
Хірен Патель

Де я можу знайти ключ після успішно згенерованого?
Ананд Фадке

11
  • Завантажте openSSL для Windows тут, тут ви можете знайти 64-бітні та 32-бітні

  • витягнути завантажений файл

  • створити ім'я папки openSSL на диску C
  • скопіюйте всі вилучені елементи у папку openSSL (бін, включення, lib, openssl.cnf)
  • отримати андроїд налагодження ключів, місце за замовчуванням буде

C: \ Users \ username \ .android \ debug.keystore

  • тепер отримайте командний рядок і вставте цей код

keytool -exportcert -alias androiddebugkey -keystore C: \ Users \ username.android \ debug.keystore | "C: \ openSSL \ bin \ openssl" sha1 -двійний | "C: \ openSSL \ bin \ openssl" base64

  • натисніть клавішу Enter, і ви отримаєте 28-значний код ключа

НЕ він запитує пароль. введення androidдає 24-значний хеш, а введення - a28-значний хеш. Не знаю чому!
sud007

погані посилання! у них взагалі немає ключових інструментів
KawaiKx

6

Вам потрібно створити сховище ключів keytool для підписаних програм для Android, як процедура, описана на Android-сайті, і тоді вам доведеться встановити cygwin, а потім вам потрібно встановити openssl з коду google, а потім просто виконати наступну команду, і ви отримаєте хеш введіть для android і введіть цей хеш-ключ у створену вами програму facebook. І тоді ви можете отримати доступ до програми facebook через додаток Android для розміщення стіни ("публикатура").

$ keytool -exportcert -alias alias_name -keystore sample_keystore.keystore | openssl sha1 -бінарний | openssl base64

Вам потрібно виконати вищевказану команду від cygwin.


6

Завантажте openSSL -> Встановіть -> він зазвичай встановлюється в C: \ OpenSSL

потім відкрийте cmd і наберіть

cd../../Program Files (Enter)

java (Enter)

dir (Enter)

cd jdk1.6.0_17 (varies with jdk versions) (Enter)

для перевірки версії jdk перейдіть до C: / program files / java / jdk_version

cd bin (enter)

keytool -exportcert -alias androiddebugkey -keystore C:Users\Shalini\.android\debug.keystore | "C:\OpenSSL\bin\openssl sha1 -binary | "C:\OpenSSL\bin\openssl base64 (Enter)

Він попросить вас пароль, який є android.


6
  1. Просто відкрийте основний файл активності та створіть нижче функцію згадування:

         try {
        PackageInfo info = getPackageManager().getPackageInfo(
                "your.application.package.name",
                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 (PackageManager.NameNotFoundException e) {
    
    } catch (NoSuchAlgorithmException e) {
     }

1.1 Запустіть додаток, це створить ключ для вашого додатка.

  1. Тепер відкрийте кот журналу та виконайте пошук за допомогою "KeyHash" та скопіюйте хеш-ключ.

  2. Коли ви генеруєте клавішу Hash, ви можете видалити цю функцію.


5

1) Створіть ключ для підписання програми та запам’ятайте псевдонім.

2) Встановіть OpenSSL.

3) Покладіть на свій шлях папку бін OpenSSL.

4) Виконайте дії , описані в розділі «Налаштування Single Sign-On» на ФБ-Android-SDK сторінки , і згенерувати хеш - ключ. Переконайтеся, що ви ввели правильний псевдонім та ім'я файлу зберігання.

5) Створіть додаток на Facebok і на вкладці Мобільні пристрої введіть цей ключ хешу.


5

Офіційна документація на сайті розробника facebook :

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // Add code to print out the key hash
    try {
        PackageInfo info = getPackageManager().getPackageInfo(
                "com.facebook.samples.hellofacebook", 
                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) {

    }

@WilliamKinaan: будь-коли;): P
Hardik Thaker

@HardikThaker Я використовував ваш код, він дає мені точно такий же keyhash, який я отримав за допомогою терміналу за цією командою, keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64і я все ще отримую хеш-ключ не відповідає жодному збереженому хешу ключів
Shan Xeeshi

4
keytool -exportcert -alias androiddebugkey -keystore       C:\Users\pravin\.android\debug.keystore | "H:\OpenSSL\bin\openssl" sha1 -binary | "H:\OpenSSL\bin\openssl" base64

Це працювало для мене ...

Кроки:

1) Open command line go to - > java Keytool..... for me C:\Program Files\Java\JDK1.7\bin
2) Download OpenSSL from google
3) paste this with changing your paths -
   keytool -exportcert -alias androiddebugkey -keystore C:\Users\pravin\.android\debug.keystore | "H:\OpenSSL\bin\openssl" sha1 -binary | "H:\OpenSSL\bin\openssl" base64 

    ....................   give proper debug.keystore path and openSSL path .. 

4) Finley it may be ask u password .. so give password -> android   ...
5) you will get 28 characters that will be your has key

4

Для Linux

Відкритий термінал:

Для налагодження налагодження

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

Ви знайдете debug.keystore з папки ".android", скопіюйте його та вставте на робочий стіл та запустіть над командою

Для випуску Build

keytool -exportcert -alias <aliasName> -keystore <keystoreFilePath> | openssl sha1 -binary | openssl base64

ПРИМІТКА. Переконайтеся, що в обох випадках він повинен запитати пароль. Якщо він не запитує пароль, це означає, що в команді щось не так.


Я отримую різні значення з різним псевдонімом, як перевірити, яке з них правильне?
Javal Nanda

це він запитує пароль з обом псевдонімом?
Бірай Залавадія

так, і як би я не ввів пароль, мені надають хеш-ключ .. моє додаток уже в магазині ігрових файлів, а рідний fb зараз не працює. Мені потрібно якось генерувати точний хеш ключа для збирання релізу. Розробники припускають включати код всередині OnCreate в наступному пості, але я хочу , щоб змусити його працювати без оновлення програми на playstore stackoverflow.com/questions/15021790 / ...
Javal Нанду

так, є проблема з вдовами з openssl. Ви можете досягти коду, вказаного в цій публікації.
Бірай Залавадія

Якщо ви хочете зробити без оновлення на playstore. 1) Створіть новий додаток Android Demp. 2) Поставте цей фрагмент коду на create. 3) підпишіть цю демонстраційну програму з тим самим магазином ключів у вас у магазині додатків 4) Потім запустіть цей підписаний apk 5) І використайте цей хеш-ключ нарешті
Biraj Zalavadia

4

Для програми Android

Цей код використовується для отримання хеш-ключа у вашій програмі Android для інтеграції у Facebook. Я протестував всі пристрої і він працює. Змініть лише назву пакета цього коду:

private void facebookHashKey() {

    try {
        PackageInfo info = getPackageManager().getPackageInfo("com.app.helpcove", PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures) {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            String hashCode  = Base64.encodeToString(md.digest(), Base64.DEFAULT);
            System.out.println("Print the hashKey for Facebook :"+hashCode);
            Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
        }
    } catch (NameNotFoundException e) {

    } catch (NoSuchAlgorithmException e) {

    }
}

4

Як я відповів на подібне питання, я виявив, що це працює для мене:

  • Скопіюйте apkname.apkфайл, який ви хочете знати хеш, у папку " Java \ jdk1.7.0_79 \ bin "
  • Виконайте цю команду keytool -list -printcert -jarfile apkname.apk
  • Скопіюйте SHA1значення та перетворіть його за допомогою цього веб-сайту
  • Використовуйте перетворене значення Keyhash ( напр. ZaHqo1xcaPv6CmvlWnJk3SaNRIQ = )

3

Найпростіше рішення:

  1. Не додайте хеш-ключ, реалізуйте все інше
  2. Якщо натиснути логін для входу у Facebook, ви отримаєте помилку із записом "Недійсний хеш ключа. Хеш ключа" xxx "не відповідає жодному збереженому ключу. ..."
  3. Відкрийте інформаційну панель програми facebook і додайте хеш "xxx =" (хеш "ххх" від знаку помилки + "=")

3

Щоб створити хеш ключа вашого випуску, запустіть наступну команду на Mac чи Windows, замінивши псевдонім ключа випуску та шлях до вашої сховища ключів.

У Windows використовуйте:

keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64

Ця команда повинна генерувати рядок з 28 символів. Пам’ятайте, що КОПУЙТЕ та ВСТАВИТИ цей ключ випуску в налаштуваннях Android ID вашого додатка Facebook.

зображення: fbcdn-dragon-a.akamaihd.net/hphotos-ak-xpa1/t39.2178-6/851568_627654437290708_1803108402_n.png

Зверніться до: https://developers.facebook.com/docs/android/getting-started#release-key-hash та http://note.taable.com


3

Використовуйте це для хеш-ключа друку в kotlin

try {
        val info = context.getPackageManager().getPackageInfo(context.packageName,
                PackageManager.GET_SIGNATURES);
        for (signature in info.signatures) {
            val md = MessageDigest.getInstance("SHA")
            md.update(signature.toByteArray())
            Log.d("Key hash ", android.util.Base64.encodeToString(md.digest(), android.util.Base64.DEFAULT))
        }
    }catch (e:Exception){

    }

2

Також вирішено моє в студії Android, але з дещо іншим підходом.

Щоб отримати значення SHA-1 в Android Studio.

  1. Клацніть Gradle
  2. Клацніть Звіт про підписання
  3. Копія SHA-1

Клацніть позначений панель в студії Android

  1. Значення SHA-1 виглядають так: CD: A1: EA: A3: 5C: 5C: 68: FB: FA: 0A: 6B: E5: 5A: 72: 64: DD: 26: 8D: 44: 84

    і відкрийте http://tomeko.net/online_tools/hex_to_base64.php, щоб перетворити значення SHA1 в base64. Це те, що Facebook вимагає отримати згенерований хеш "******************** =" і скопіювати хеш-ключ на консоль програми facebook.

Частина цієї відповіді взята звідси Github Link


2

Існує два методи, доступні складний і легкий

Способи перший: (мало складний)

Перш за все вам потрібно завантажити ssl 64bit або 32bitвідповідно, не забудьте завантажити файл з ім'ям, що містить eкод коду версіїsl-0.9.8e_X64.zip АБО opensl-0.9.8e_WIN32.zip не з kкодом після версії,

і розмістіть у каталозі AndroidStudio / jre / bin, якщо ви не знаєте, де його розмістити, ви можете знайти цей каталог, клацнувши правою кнопкою миші на ярлику андроїд-студії, як:

введіть тут опис зображення

Тепер ви примудрилися два необхідних речей в одному місці, але все ж ви повинні знайти шлях для вашого debug.keystore, що завжди можна знайти в "C:\Users\yourusernamehere\.android\debug.keystore",

ПРИМІТКА Якщо ваш додаток уже опубліковано або збирається опублікувати, тоді використовуйте магазин зберігання підписів для публікації, якщо і тільки якщо ви протестуєте в режимі розробки, ніж ви можете використовувати налагодження, keysotre

Коли все налаштовано, дозвольте організувати команду, яку ви хотіли виконати для генерації хеш-ключів base64 format, і ви будете мати вигляд приблизно так

keytool.exe -exportcert -alias androiddebugkey -keystore "C:\Users\ayyaz talat\.android\debug.keystore" | "D:\Program Files\Android\Android Studio\jre\bin\openssl\bin\openssl.exe" sha1 -binary |"D:\Program Files\Android\Android Studio\jre\bin\openssl\bin\openssl.exe" base64

він запропонує вам ввести пароль для debug.keystore, який за замовчуванням є android. якщо ви користуєтесь власним ключем, пароль також буде вашим. Вихід буде виглядати так, якщо все піде так, як очікувалося, сподіваюся, що це може допомогти

введіть тут опис зображення

Другий метод (відповідно легкий)

якщо ви не хочете пройти всю вищеописану процедуру, просто використовуйте наступний метод для реєстрації haskey:

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

вихід:

введіть тут опис зображення


1

Найкращим підходом є використання наступного коду:

private void getHashKey(String pkgName)
{
    try
    {
        PackageInfo info = getPackageManager().getPackageInfo(pkgName, PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures)
        {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            String hashKey = Base64.encodeBytes(md.digest());
            _hashKey_et.setText(hashKey);
            Log.i("KeyTool", pkgName + " -> hashKey = " + hashKey);
        }
    }
    catch (NameNotFoundException e)
    {
        e.printStackTrace();
    }
    catch (NoSuchAlgorithmException e)
    {
        e.printStackTrace();
    }
}

Але мене настільки засмутило те, що не існує простого інструменту для створення програми HashKey для програми Facebook. Кожен раз, коли мені доводилося грати з Openssl та Keytool або використовувати код, щоб отримати хеш від підпису ...

Тому я написав простий KeyGenTool, який зробить цю роботу для вас: -> KeyGenTool в Google Play <-

Насолоджуйтесь :)


1

Я зробив невелику помилку, яку слід пам’ятати. Якщо ви користуєтесь магазином брелоків, то вкажіть своє псевдонім, а не androiddebugkey ...

Я вирішив свою проблему. Тепер якщо на моєму пристрої встановлено Facebook, то все одно мій додаток отримує дані про інтеграцію входу у Facebook. Тільки дбайте лише про свій хеш-ключ.

Дивіться нижче.

C:\Program Files\Java\jdk1.6.0_45\bin>keytool -exportcert -alias here your alias name  -keystore "G:\yourkeystorename.keystore" |"G:\ssl\bin\openssl" sha1 -binary | "G:\ssl\bin\openssl" base64

Потім натисніть Enter- він попросить вас пароль, а потім введіть пароль вашого магазинного ключа, а не Android.

Класно.


0
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

import android.os.Bundle;
import android.app.Activity;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.Signature;
import android.text.Editable;
import android.util.Base64;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends Activity {

    Button btn;
    EditText et;
    PackageInfo info;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn=(Button)findViewById(R.id.button1);
        et=(EditText)findViewById(R.id.editText1);
        btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                try {
                    info = getPackageManager().getPackageInfo("com.example.id", 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()));
                        et.setText("" + something);
                        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());
                }
            }
        });
    }



}

Цей код не генерує для мене дійсний хеш-ключ. @ Відповідь Джамшида працює для мене на Mac OSX.
Loolooii

0

Котлін код, щоб отримати ключ Hash

 private fun logHashKey() {
    try {
        val info = getPackageManager().getPackageInfo("your.package.name", PackageManager.GET_SIGNING_CERTIFICATES);
        for (signature in info.signingInfo.signingCertificateHistory) {

            val md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            val something = Base64.getEncoder().encodeToString(md.digest());
            Log.e("hash key", something);
        }
    } catch (e1: PackageManager.NameNotFoundException) {
        Log.e("name not found", e1.toString());
    } catch (e: NoSuchAlgorithmException) {
        Log.e("no such an algorithm", e.toString());
    } catch (e: Exception) {
        Log.e("exception", e.toString());
    }
}

Будь ласка, не забудьте створити ключі в середовищі налагодження та випуску, коли вони змінюються відповідно до налаштування збірки.


0

спробуйте це :

  • два способи отримати ключове значення Hash

1) отримати хеш-ключ із використання командного рядка (Офіційний документ: https://developers.facebook.com/docs/android/getting-started )

keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl
base64

АБО

2) отримати хеш-ключ за допомогою коду

  @Override
   protected void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
           setContentView(R.layout.activity_main);

            //Hask Kay generation 
             GetKeyHase();
    }

    private void GetKeyHase() {
            try {
                PackageInfo info = getPackageManager().getPackageInfo("ADD YOUR PACKAGE NAME", PackageManager.GET_SIGNATURES);
                for (Signature signature : info.signatures) {
                    MessageDigest md = (MessageDigest.getInstance("SHA"));
                    md.update(signature.toByteArray());
                    String hashkey_value = new String(Base64.encode(md.digest(), 0));
                    Log.e("hash key", hashkey_value);
                    //check you logcat hash key value
                }
            }catch (Exception e) {
                Log.e("exception", e.toString());
            }
        }
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.