Хэш ключа приложения Android не соответствует сохраненным хэшам ключей

У меня есть приложение для производства в Play Store, которое использует логин с Facebook SDK. Когда я отлаживаю приложение от Eclipse, нет проблем, но когда его на производстве он дает мне следующую ошибку после того, как Facebook запрашивает у меня разрешения. Я добавил на своей странице приложения на developers.facebook.com хэш ключа, сгенерированный с помощью keytool с помощью этой команды:

keytool-exportcert-псевдоним Диего-keystore "C:UsersDiegoDesktopCeluChat.Хранилище" | "C:opensslbinopenssl.exe " sha1-двоичный | "C:opensslbinopenssl.ехе" в base64

CeluChat.KeyStore-это хранилище ключей, которое я использовал при экспорте подписанного приложения, и когда keytool предлагает мне пароль, я ввел его при экспорте.

но ошибка, которая дает мне на производстве (загружается из Play Store):

10-20 22:21:10.752: W / fb4a (:): BlueServiceQueue (5872): com.фейсбук.http.протокол.ApiException: ключевой хэш VQ3XhZb5_tBH9oGe2WW32DDdNS0 не соответствует сохраненным хэшам ключей.

ключ хэша на исключение отличается от ключа генерируются с помощью keytool. В любом случае я добавил ключевой хэш на Facebook, но он все еще не работает.

11 ответов


Facebook как заменяет +,- и / с _

поэтому просто попробуйте заменить _ на+, - И / и добавить этот хэш-ключ.

надеюсь, это должно сработать.


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

try {
        PackageInfo info =     getPackageManager().getPackageInfo("com.package.mypackage",     PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures) {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            String sign=Base64.encodeToString(md.digest(), Base64.DEFAULT);
            Log.e("MY KEY HASH:", sign);
            Toast.makeText(getApplicationContext(),sign,     Toast.LENGTH_LONG).show();
        }
} catch (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}

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

http://www.easyfacebookandroidsdk.com/download/keyhash.zip


Я только что обнаружил ошибку со страницей ввода ключа приложения: если вы вставляете хэш-ключ из приложения, не нажимая Enter, а затем нажмите кнопку "Сохранить изменения", вновь введенный код исчезнет, но страница покажет "сохранено!" ответное сообщение. Это неправда: он не спас. Вы должны нажать клавишу Enter после вставки хэш-ключа, а затем нажать "Сохранить изменения".

Я сохранил ключ, включая знак"=". Это сработало.


просто поместите возвращенный хэш-ключ сообщения об ошибке:

10-20 22:21:10.752: W/fb4a(:):BlueServiceQueue(5872): com.facebook.http.protocol.ApiException: Key hash VQ3XhZb5_tBH9oGe2WW32DDdNS0 does not match any stored key hashes.

VQ3XhZb5_tBH9oGe2WW32DDdNS0

на Facebook разработчики ключевых хэшей вашего приложения.

надеюсь, что это поможет.


Это хороший вопрос. И есть 2 способа сделать это. Что обычно происходит с нами при интеграции Facebook SDK для android, мы продолжаем следовать инструкциям из сайт разработчика facebook.

но как только приложение выходит в play-store, мы, как правило, забываем процедуру, которая еще не завершена. И мы заканчиваем на той же ошибке:

05-13 14:45:43.882: W/fb4a(:<default>):BlueServiceQueue(25454): Exception during service
05-13 14:45:43.882: W/fb4a(:<default>):BlueServiceQueue(25454): com.facebook.http.protocol.ApiException: Key hash XXXXXXXXXXXXXX does not match any stored key hashes.

Jus получил контрольный список для этого:

1) используя ключ отладки, пока превращающ App

сайт разработчика Facebook довольно полезен в этом. Просто скопируйте код, который у них есть в страница начала работы в командной строке. а именно:

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

пароль к нему-android, и вы получите ключ отладки после него.

enter image description here

2) создание ключа отладки после подписания Приложения

как только приложение будет готово к загрузке в Google Play store, нам нужно подписать его с помощью ключа, значение которого генерируется из хранилища ключей. Что хорошо объясняется Satheesh в своем ответе. использование:

keytool -exportcert -alias <Alias Name here> -keystore <Path to keystore> | openssl sha1 -binary | openssl base64

, который дает вам другой ключ, чем ключ отладки.

enter image description here


Ну, если вы используете Windows, используйте эту команду в cmd .

переместить в C:\Program файлы\Java\jdk1.8.0_25\bin

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | "C:\openssl\bin\openssl.exe" sha1 -binary | "C:\openssl\bin\openssl.exe" base64

при создании хэш-ключа вам нужно использовать openssl-0.9.8e_X64.zip в windows нельзя использовать openssl-0.9.8k_X64.zip

Это решение.


попробовав все вышеперечисленное, я попробовал это.. и сработало!!!

  1. копировать хэш ключа было то же самое, что Facebook дает на исключение,
  2. заменить "_" с "/" и добавить "=" на
  3. добавить его в Facebook
  4. также проверьте имя пакета и имя действия еще раз. Это сработало для меня!!.

пожалуйста, следуйте ниже метод для создания хэш-ключа это предлагается @lucianbase на этой странице https://github.com/AntonioCuevaUrraco/nativescript-facebook-login/issues/14

создайте ключ SHA1 вашего приложения с помощью android studio или cmd tool. скопировать его такой диск:А1:ЕА:А3:5С:5С:68:ФБ:Альфа:0А:6Б:Е5:5А:72:64:ДД:26:8Д:44:84 и открыть http://tomeko.net/online_tools/hex_to_base64.php чтобы преобразовать значение SHA1 в base64. Это то, что Facebook требует получить сгенерированный хэш "********************= " и скопируйте ключевой хэш в приложение facebook.


Просто Замените Хэш Ключа Ошибки В Вашем https://developers.facebook.com/app применение...!

100 Процентов Это Будет Работать Наверняка.

-Сунил


ну на самом деле лучший и простой способ таков. если вы видите эту проблему на экране телефона. Вы должны увидеть эту проблему с android studio LOGCAT. это понравится

01-26 14:58:22.885 14851-19534/? W/fb4a.BlueServiceQueue: Exception during service
                                                          X.1xO: [code] 404 [message]: Key hash 961x8mIbWmA7TRRpbk...= does not match any stored key hashes. (404) [extra]: null
                                                              at X.0fG.D(:240135)
                                                              at X.0k8.F(:255078)
                                                              at X.3gX.EUB(:738232)
                                                              at X.0fo.handleResponse(:242693)
                                                              at X.0k5.run(:254998)
                                                              at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:428)
                                                              at X.0NH.run(:187661)
                                                              at X.0JQ.run(:49671)
                                                              at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
                                                              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
                                                              at X.0NM.run(:187873)
                                                              at java.lang.Thread.run(Thread.java:761)

скопируйте этот хэш-ключ из logcat, который я сделал его частным (...) и вставьте его на страницу разработчика facebook. Это немедленно решит вашу проблему. Также убедитесь, что хэш-ключ вашего выпущенного APK отличается от оригинального хэш-ключа, который загружается из google play.


Включить Единый Вход Включите единый вход для вашего приложения, установив единый вход в Yes ниже. пожалуйста, проверьте пункт нет. 9 on https://developers.facebook.com/docs/facebook-login/android