Подтвердить что ты не робот

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

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

keytool -exportcert -alias diego -keystore "C:\Users\Diego\Desktop\CeluChat.KeyStore" | "C:\openssl\bin\openssl.exe" sha1 -binary | "C:\openssl\bin\openssl.exe" base64

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

Но ошибка, которая дает мне производство (скачанная из Play Маркета):

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

Я использовал это, чтобы показать ключ при запуске моего приложения. В моем случае я получил неправильный хэш ключа из команды 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

Ответ 3

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

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

Ответ 4

Проще поставить хеш-ключ возвращаемого сообщения об ошибке:

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 есть ключевые хэши вашего приложения.

Надеюсь на эту помощь.

Ответ 5

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

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

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) Использование ключа отладки при разработке приложения

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

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

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

enter image description here

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

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

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

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

enter image description here

Ответ 6

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

  • Скопировать хэш ключа было то же самое, что Facebook дает исключение,
  • Замените "_" на "/" и добавьте "=" в конец,
  • Добавить в Facebook
  • Еще раз проверьте имя пакета и название операции. Это сработало для меня!!.

Ответ 7

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

Переместить в C:\Program Files\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 в окнах, вы не можете использовать openssl-0.9.8k_X64.zip

Это решение.

Ответ 8

Просто замените хэширование ошибок в вашем https://developers.facebook.com/app приложение...!

100 процентов Это будет работать для уверенного.

-Sunil