Інтеграція Android у Facebook з недійсним хешем ключів


194

В одному зі своїх додатків мені потрібно отримати дані з Facebook ... Я роблю це:

Я створив ідентифікатор додатка . Він входить успішно, але після виходу з системи я входжу в систему, а потім дає мені:

Знімок екрана недійсної помилки хеш-ключа Facebook

Що не так я роблю? Я використовую SDK Facebook ... Я встановив Facebook на свій телефон ... Він працює добре в емуляторі, але в ньому не встановлено вбудовану програму Facebook.

Це мій код:

if (FB_APP_ID == null) {
    Builder alertBuilder = new Builder(this);
    alertBuilder.setTitle("Warning");
    alertBuilder.setMessage("A Facebook Applicaton ID must be " +
                            "specified before running this example: see App.java");
    alertBuilder.create().show();
}

// Initialize the dispatcher
Dispatcher dispatcher = new Dispatcher(this);
dispatcher.addHandler("login", LoginHandler.class);
dispatcher.addHandler("stream", StreamHandler.class);
dispatcher.addHandler("logout", LogoutHandler.class);

// If a session already exists, render the stream page
// immediately. Otherwise, render the login page.
Session session = Session.restore(this);
if (session != null) {
    dispatcher.runHandler("stream");
}
else {
    dispatcher.runHandler("login");
}

12
але він працює нормально, коли перший раз вхід не працює, якщо я ввійду після завершення виходу
Android

1
так, у мене є .. створено за допомогою спробуйте {PackageInfo info = getPackageManager (). getPackageInfo ("com.facebook.samples.hellofacebook", PackageManager.GET_SIGNATURES); for (Підпис підпису: info.signatures) {MessageDigest md = MessageDigest.getInstance ("SHA"); md.update (signature.toByteArray ()); Log.d ("KeyHash:", Base64.encodeToString (md.digest (), Base64.DEFAULT)); }
Android

1
Я вирішив цю проблему тут! Тут зрозуміли круто! [ Stackoverflow.com/questions/5306009/… ] [1]
Маді

3
@Android Хоча це старе, але я мушу згадати це. Це не відбувається, коли користувач вийшов із системи та потім увійшов. Це трапляється при налагодженні вдруге, тобто перевстановлюйте додаток під час налагодження. Таким чином, хеш змінюється. Це не відбувається, якщо підписаний додаток (виробництво готове)
Nilay Vishwakarma

1
Ви отримуєте таку ж помилку, якщо ви видаляєте додаток Facebook? Я протестував з двох телефонів, і ця помилка виникає лише тоді, коли встановлено додаток Facebook.
Хайме Монтоя

Відповіді:


274

Створений хеш-ключ неправильний. Ви можете отримати хеш-ключ за допомогою двох кроків.

Перший - через командний рядок. Ще один - через кодування. Хеш-ключ через командний рядок працює лише вперше. Я не знаю причини. У мене теж є та ж проблема. Тому я спробував це програмно.

Виконайте такі дії:

Вставте наступний код у oncreate().

try {
    PackageInfo info = getPackageManager().getPackageInfo(
                           "com.example.packagename",
                           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) {
}

Змініть "com.example.packagename" своїм іменем пакета у вищезазначеному кодуванні без відмов (ви можете знайти ім'я пакета у файлі маніфесту Android).

Запустіть свою програму. Перейдіть до дії, де ви вставили вищевказаний код. У файлі LogCat знайдіть "KeyHash". Ви можете знайти ключовий хеш. Скопіюйте хеш-ключ і перейдіть на сторінку інформаційної панелі додатків Facebook. Перейдіть до налаштувань та введіть деталі, як на зображенні нижче.

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

Після завершення вищезазначеного кроку перезапустіть програму ще раз. Тепер ви можете увійти у Facebook. Для отримання більш детальної інформації про ключовий хеш перевірте посилання .

Якщо ви додасте неправильну інформацію на сторінку налаштувань, це означає, що вона призведе до деякої помилки. Тому використовуйте правильну інформацію там. А також якщо громадськості (крім вас) потрібно використовувати вашу програму, це означає, що вам потрібно ввімкнути дозвіл (змінити "так" у "Статус і огляд" поруч із налаштуваннями) .


20
Таким чином, швидше за все, ви отримали ключовий хеш для налагодження зберігання ключів. Він працює для вас в режимі розробки, не потрібен для вашого режиму виробництва. Принаймні, це не працює для мого виробничого додатка.
Лянцзюн

3
дякую, що ти врятував мою багато часу ... Офіційний документ facebook не повинен читати це фігня
DjP

Дуже дякую чувак!
KinGPinG

Привіт за цим кодом PackageInfo info = getPackageManager (). GetPackageInfo ("com.example.packagename", PackageManager.GET_SIGNATURES); for (Підпис підпису: info.signatures) {MessageDigest md = MessageDigest.getInstance ("SHA"); md.update (signature.toByteArray ()); Log.d ("KeyHash:", Base64.encodeToString (md.digest (), Base64.DEFAULT)); інший хеш-ключ надсилається, коли я запускав команду в cmd на windows, мій хеш-ключ був іншим, і я додав його у FB, але все-таки журнал показує хеш програмного коду
Sagar Devanga

1
Економив мені багато часу. Все-таки найкраще. Перевірте багатослівність на ключ, скопіюйте та вставте його на сторінку розробників у facebook. Не робіть помилки, ввівши її вручну! Також розумійте, що ключі змінюються щоразу, коли ви видаляєте та встановлюєте додаток.
sanjeev

190

Якщо ви використовуєте підпис програми Google Play:

Відкрийте розділ підписання додатків у консолі Google Play і отримайте хеш SHA-1 під сертифікатом підписання програми . Потім перетворіть його в Base64 , наприклад, за допомогою цього інструменту: Шістнадцятковий -> базовий декодер рядків64

Скріншот консолі

Перетворити на скріншот Base64


14
Сер! ти рятівник! Багато любові. Я використовував підпис у Play Store, поки розміщував хеші моїх локальних ключів випуску у консолі facebook.
Taha Rushain

4
Ви врятуєте моє життя, я використовую реакцію, ніхто не згадував про підписання програми для ігрових магазинів
TomSawyer

7
Дякую! Це працює! Ви також можете використовувати термінальну команду для цього: echo YOUR_SHA1_CERTIFICATE_COPIED_FROM_GOOGLE_PLAY | sed s/\://g | xxd -r -p | base64
Юрій Середюк

4
Це те, що потрібно зробити для виробничого середовища !!! Пальці вгору!
Бікі

Саме те, що я хотів знати. Hashkey змінює налагодження щоразу, коли ви видаляєте та встановлюєте додаток. Для підписаного apk це буде найкращим рішенням! Ви PPL полегшуєте життя завдяки!
саньєєв

124

Якщо ви зіткнулися з цією проблемою, тоді введіть цей ключ у свою сторінку developer.facebook.com :

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

Потім переконайтеся , що ваш додаток в прямому ефірі на developer.facebook.com .

Це зелене коло вказує на додаток:

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

Якщо це не так, виконайте наступні два кроки, щоб зробити ваш додаток живим:

Крок 1 Перейдіть до своєї програми → налаштуваннядодайте контактну електронну пошту та застосуйте Зберегти зміни.

Крок 2 Перейдіть до параметра Огляд додатка та переконайтесь, що ця кнопка - так . Я додав скріншот:

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

Примітка: Якщо ви хочете скопіювати хешкей, перевірте BlueServiceQueue в LogCat .


5
Чи є простий спосіб скопіювати цей хеш з телефону?
Даніель Шац

4
@DanielShatz він з'являється у logcat. Я дізнався лише після того, як скопіював це лист по листу.
Алаа М.

4
@DanielShatz Шукайте тег BlueServiceQueueу logcat
Alaa M.

4
Ця відповідь спрацювала на мене. Після декількох спроб введення хешу вручну це дало мені таку саму помилку, проблема була в тому, що я набрала великі літери i «я» замість малих регістрів L «l». Знадобилося трохи часу, щоб усвідомити це.
Маркус

1
Це працює, але мені цікаво, звідки FB взяти цей хеш-ключ? Ніхто не дивується? Помилка відображала хороший робочий хеш-ключ, але навіть з усіма командами або отримання ша1 до base64 від підпису програми в Google надала мені ключ, який FB показав у помилці ... Спасибі за хитрість все одно
Umar3x

82

У мене така ж проблема. Я був впевнений, що це було через дуже малу помилку, і так, це було!

Я знайшов рішення:

Коли генерував хеш-ключ налагодження на своєму комп’ютері, я ввів пароль моєї системи. Але пароль повинен бути наступним -

Введіть пароль для зберігання клавіш: "android". Це була єдина проблема в моєму випадку.

----- Для генерації хеш-ключа налагодження використовуйте цю команду -

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

Введіть пароль зберігання клавіш: "android"

----- Щоб створити хеш ключа випуску , використовуйте цю команду -

keytool -exportcert -alias "alias of keystore" -keystore "Your path to the keystore when signing app" | openssl sha1 -binary | openssl base64

Надайте пароль для зберігання ключів після виконання цієї команди.


5
використовуючи "android", як пароль працює для мене. це дивовижно.
adbie

3
використовувати цей "андроїд" як пароль при створенні хеш-ключа.
Акаш Бісарія

2
на машині Windows переконайтесь, що змінна контур правильно встановлена ​​для папок openssl \ bin та java .. \ bin. Також встановіть змінну HOMEPATH, щоб мати можливість використовувати команди з facebook.
KawaiKx

1
Принаймні, на mac мені довелося встановити Java JDK, щоб змусити це працювати. В іншому випадку наведена вище команда налагодження все ще генерує хеш, але хеш не працює, і вам не буде запропоновано ввести пароль. З встановленим JDK це працювало як шарм.
lejonl

1
ця відповідь має бути ПРАВИЛЬНИМ ВІДПОВІДОМ
Еван Нго

20

Я зазнав тієї ж проблеми. Я провів коротке дослідження можливих причин такої дивної поведінки і виявив наступне:

  • Під час першого виконання нового додатка Facebook це дозволить з'єднатись / увійти, навіть якщо ви не вказали жодних хеш-клавіш.

  • Для мене підручник, який надав Facebook, не генерував правильний хеш-ключ, оскільки він давав неправильну конфігурацію . Під час виконання:

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

переконайтеся, що ви перевірили всі властивості - те HOMEPATH, наявність сховища ключів тощо. Можливо, вам також доведеться вказати пароль.

  • Що створило правильну конфігурацію, це рішення, запропоноване @Mahendran .

  • Крім того, якщо ви бачите помилку, спочатку опубліковану ( http://i.stack.imgur.com/58q3v.png ), швидше за все, ключовий хеш, який ви бачите на екрані, є вашим справжнім. Якщо нічого іншого не працює, спробуйте ввести його у Facebook.

Усі ці результати отримали: 64-розрядне видання Windows 7, Android Studio 1.2.2, JDK 7.


2
версія Linux: `keytool -exportcert -alias androiddebugkey -keystore $ HOME / .android / debug.keystore | openssl sha1 -бінарний | openssl base64`
ruX

1
Просто введіть те, що показано у Facebook на екрані пристрою, що має працювати. Дякую за замітку @Martin
ralphgabb

14

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

keytool \
    -exportcert \
    -alias YourKeyAlias \
    -storepass YourStoreKeyPassword \
    -keystore PathToYourKeyStoreFile | openssl sha1 -binary | openssl base64

1
просто хочете додати коментар, скористайтеся виробничим магазином брелоків.
Лянцзюнь

2
@Liangjun Насправді ви повинні використовувати всі свої ключі, оскільки в іншому випадку ви не зможете протестувати Facbeook Login у середовищі налагодження.
Pijusn

2
@Pius, так, я фактично використовую обидві клавіші. Я повинен був це чітко заявити.
Лянцзюн

Я отримую помилку для цієї команди (немає часу виконання Java, вимагаю встановити.), Але все одно отримую ключ, однак недійсний, і я просто копіюю вставте той, з logcat, який мені каже, не розпізнається.
Крісті Балуша

8

Ви повинні створити два ключових хеша, один для налагодження та один для випуску.

Для хеша ключа налагодження :

В ОС X запустіть:

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

У Windows запустіть:

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

Клавіша налагодження хешує джерело

Для хешу ключа Release :

В OS X запустіть (замініть те, що знаходиться між <>вашими значеннями) :

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

У Windows використовуйте (замініть те, що знаходиться між <>вашими значеннями) :

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

Відпустіть джерело хешей ключа


Я отримую помилку для цієї команди (немає часу виконання Java, вимагаю встановити.), Але все одно отримую ключ, однак недійсний і для того, щоб він працював, я просто скопіюйте вставити один з logcat
Cristi Băluță

Можливо, у командному рядку ви не встановили PATH свого Java та keytool? @ CristiBăluță
MBH

7

Я спробував усі попередні відповіді, і ніщо не допомогло моєму випадку зі своїми клієнтами!

Тоді мій клієнт згадав, що на його пристрої встановлено додаток Facebook. Після того як він його зняв. логін спрацював ідеально.

Хешкей був змінений, і я замінив старі хеш-ключі на консолі розробників Facebook на ключ від помилки (як було запропоновано вище), і він працює!

Сама проблема може бути проблемою у застосуванні Facebook, тому вам краще зрозуміти це на пристрої із встановленим додатком Facebook та на пристрої, де додаток Facebook не встановлено, і обробляти обидва випадки ...


Так-же тут я отримав цю помилку після встановлення програми facebook на пристрої. Тому зараз я поклав 2 хеш-клавіші у налаштуваннях розробки Facebook.
застряг над потоком

3
У мене дуже схожа ситуація з вашою. Що мені допомогло - перейти на вашу сторінку FB - Налаштування - Програми - Видаліть додаток зі списку. Змініть хеш-ключ та перевстановіть програму fb та ваш додаток. А зараз це працює ...
anna_manzhula

4

Ось як я вирішив цю проблему:

Спочатку ви повинні отримати значення SHA-1. Для цього є два способи.

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

  1. Клацніть Gradle
  2. Клацніть Звіт про підписання
  3. Скопіюйте значення SHA-1

АБО

Щоб отримати значення SHA-1 з файлу зберігання ключів .

keytool -list -v -keystore keystore_file_name.jks -alias key0

Скопіюйте значення SHA-1 у буфер обміну так:

CD:A1:EA:A3:5C:5C:68:FB:FA:0A:6B:E5:5A:72:64:DD:26:8D:44:84

І відкрийте шістнадцятковий -> рядковий декодер Base64 щоб перетворити ваше значення SHA-1 в Base64.

Це те, що вимагає Facebook.

Отримайте згенерований хеш "******************** =" і скопіюйте хеш-ключ до програми Facebook.


3

У мене була така ж проблема. Спочатку увійдіть, просто добре, але потім - недійсний хеш ключа.

Facebook SDK for Unity отримує неправильний хеш ключів. Він отримує ключ від "C: \ Users \" your user ".android \ debug.keystore", і в ідеальному світі він повинен отримати його з магазину ключів, який ви створили у своєму проекті. Ось чому він говорить вам, що ключовий хеш не зареєстрований.

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


3

Наступний код дасть вам хеш для Facebook, але ви повинні виконати ці кроки, щоб отримати хеш кандидата у випуск.

  1. Скопіюйте та вставте цей код у своїй основній діяльності

    try {
        PackageInfo info = getPackageManager().getPackageInfo(
                               "com.example.packagename",
                               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) {
    }
  2. Створіть підписаний файл APK .

  3. Підключіть телефон до ноутбука та переконайтесь, що він залишається на зв’язку.
  4. Встановіть і запустіть файл APK у своєму телефоні, перемістивши APK-версію до телефону вручну.
  5. Тепер подивіться на Android LogCat (використовуйте фільтр KeyHash: . Ви повинні побачити ваш хеш-ключ випуску для Facebook. Просто скопіюйте та вставте його у свій https://developers.facebook.com/apps. Це в налаштуваннях.
  6. Тепер ви можете протестувати додаток, воно повинно працювати чудово.

зауважте, що код працює лише якщо ви генеруєте підписаний apk. в іншому випадку він надасть вам лише налагодження apk хеша, який марний для випущеного apk
abdul jalil

Привіт, коли я додав генерований хешкей у додаток facebook, він працює чудово, але коли намагаюся запустити на іншому пристрої, він знову показує "INVALID HASH KEY", як я можу встановити хеш-ключ для лицьової книги, що міститься для роботи на всіх пристроях.
Діпак

2

Після тривалого дослідження ми знайшли рішення.

Ми встановили дозволи:

loginButton.setReadPermissions(public_profile email);

Це спрацювало вперше, але коли ми знову увійшли у Facebook, це призвело до невірної помилки хешу .

Простим рішенням було змінити вищевказаний рядок на:

loginButton.setReadPermissions(Arrays.asList("public_profile", "email"));

І це спрацювало як блаженство!

Facebook повинен повернути правильний виняток замість помилкової помилки невірного хеш-ключа.


У мене така ж проблема. Я спробував ваше рішення, але досі не можу вирішити свою проблему @ user3663906
BekaKK

2

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

Єдиним рішенням, яке працювало для мене, було - видалити програму OpenSSL з Google та завантажити з Win32 / Win64 OpenSSL Installer для Windows

Це справді працює як магія.


2

Навіть незважаючи на те, що на це питання було відповідено дуже корисними способами, я просто хотів додати, що коли я дотримувався відповіді Рафала Малекса (за допомогою хеш-клавіш на консолі Google Play), я не зміг користуватися клавішею SHA1, що підписує додаток, все-таки отримав загальну інформацію помилка від Facebook. Натомість мені потрібно було використовувати відбиток сертифіката SHA-1 з частини сертифіката для завантаження (трохи нижче частини підпису додатка на консолі Google Play). Інакший процес інакше;

  1. Скопіюйте відбиток сертифіката SHA-1 з розділу Завантажити сертифікат на консолі Google Play

  2. Перетворіть SHA-1 за допомогою: http://tomeko.net/online_tools/hex_to_base64.php та скопіюйте вихід (base64)

  3. Вставте його у вкладку Key Hashes на developer.facebook.com та збережіть зміни.

Сподіваємось, ця відповідь не є зайвою і допоможе тому, хто не може змусити її працювати з сертифікатом для підписання програми.

Тепер логін у Facebook працює в моєму додатку як у режимі налагодження, так і в режимі випуску.


1

Вставте наступний код у ваш метод OnCreate:

try {
    PackageInfo info = getPackageManager().getPackageInfo(
                           "com.example.packagename",
                           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) {
    e.printStackTrace();
}
catch (NoSuchAlgorithmException e) {
    e.printStackTrace();
}

Просто змініть назву пакета. Потім перейдіть до свого файлу LogCat та виберіть тут пошук налагодження. Тоді ви знайдете хеш-ключ. Тепер скопіюйте цей хеш-ключ і перейдіть на сайт developer.facebook.app_id, відредагуйте хеш-ключ і натисніть Save. Тепер знову запустіть проект Android. Я думаю, що питання буде вирішено.


7
повторення іншого хлопця
Бето Кальдас

1

Це може допомогти комусь із тією ж проблемою.

  1. Створіть хеш ключів за допомогою наведеного нижче коду

    keytool -exportcert -alias <your_keystore> alias -keystore <your_keystore_file> | openssl sha1 -binary | openssl base64

    Як користуватися keytool

  2. Вставте його в обов'язкове поле в розробник Facebook

  3. В Android Studio меню ФайлСтруктура проекту

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

    Додати параметри підписання.

  4. Виберіть ароматизатори

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

    Виберіть створену нами конфігурацію підписання.

  5. Виберіть тип збірки

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

  6. Виберіть варіант складання та побудуйте його

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


1

У мене була така ж проблема, коли я налагоджував додаток. Я переписав хеш, який ви закреслили у доданому зображенні (той, про який Facebook говорить, що недійсний), і додав його в консоль розробників Facebook до ключових хешей. Просто будьте уважні до друкарських помилок.

Це рішення більше схоже на легке вирішення, ніж на належне рішення.


1

Якщо ви вводите клавішу вручну (наприклад, з мобільного на інформаційну панель Facebook), переконайтесь, що ви розрізняєте малий L та великий капітал.


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

0

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

/usr/lib/jvm/jdk1.8.0_66/bin/keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

Якщо ви нічого не змінили з паролем за замовчуванням, він повинен бути "android" .

Ви також можете налаштувати його у файлі build.gradle. Але той самий пароль псевдоніма слід використовувати для створення хеша:

android {
    signingConfigs {
        release {
            storeFile file("~/.android/debug.keystore")
            storePassword "android"
            keyAlias "androiddebugkey"
            keyPassword "android"
        }
    }
}

0

Тут багато правильних відповідей. Тільки одне:

Вставте отриманий хеш у програмуНалаштуванняОсновне , а не через посібник із швидкого запуску.


0

У мене була така ж проблема.

Переконайтеся, що ви створюєте файл APK на тому ж пристрої, який створив хешкей, який зберігається в розділі розробників Facebook.


0

Я це виправив, додавши наступне в MainApplication.onCreate:

try {
    PackageInfo info = getPackageManager().getPackageInfo(
                           "com.genolingo.genolingo",
                           PackageManager.GET_SIGNATURES);

    for (Signature signature : info.signatures) {
        MessageDigest md = MessageDigest.getInstance("SHA");
        md.update(signature.toByteArray());
        String hash = Base64.encodeToString(md.digest(), Base64.DEFAULT);
        KeyHash.addKeyHash(hash);
    }
}
catch (PackageManager.NameNotFoundException e) {
    Log.e("PackageInfoError:", "NameNotFoundException");
}
catch (NoSuchAlgorithmException e) {
    Log.e("PackageInfoError:", "NoSuchAlgorithmException");
}

Потім я завантажив це на консоль розробника Google, а потім завантажив отримане APK, який з будь-якої причини має абсолютно інший хеш-ключ.

Потім я використовував LogCat, щоб визначити новий хеш ключів, і додав його до Facebook, як інші користувачі намітили.


0

Якщо ви генеруєте хеші ключів випуску, переконайтесь, що ви ввели фактичний пароль вашого магазину ключів, а не "android".

Це було моє питання. Випуск налагодження працював, але APK випуску не був.


-1

Використовуйте наведений нижче код у методі onCreate () вашої діяльності:

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 (NameNotFoundException e) {
}
catch (NoSuchAlgorithmException e) {
}

Запустіть цей код. Це створить хеш-ключ. Скопіюйте цей KeyHash у налаштуваннях програми Facebook та збережіть зміни. Потім увійдіть у свою заявку. Це спрацює ідеально і в майбутньому.


3
повторення іншого хлопця
Бето Кальдас
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.