it-swarm.com.ru

Android Facebook SDK: сгенерировать ключ разблокировки

Я создаю приложение, в котором пользователи могут войти через Facebook.

Я создал хеш-ключи, как показано ниже:

try {
         PackageInfo info = getPackageManager().getPackageInfo(
         "com.app.package",
         PackageManager.GET_SIGNATURES);
         for (Signature signature : info.signatures) {
         MessageDigest md = MessageDigest.getInstance("SHA");
         md.update(signature.toByteArray());
         Log.d("KeyHash", "KeyHash:"+ Base64.encodeToString(md.digest(),
         Base64.DEFAULT));
         Toast.makeText(getApplicationContext(), Base64.encodeToString(md.digest(),
                 Base64.DEFAULT), Toast.LENGTH_LONG).show();
         }
         } catch (NameNotFoundException e) {

         } catch (NoSuchAlgorithmException e) {

         }

В режиме отладки все работает хорошо. 

Когда я экспортирую проект для выпуска, он выдает эту ошибку:

"Invalid key hash. The key hash ****************** does not match any stored key hashes"

Я вставляю ключ, напечатанный на панели инструментов Facebook Developer, но приложение все равно выдает мне эту ошибку.

Полный пакет моей работы - «com.app.package.views», и я попытался использовать этот пакет (в качестве имени пакета Google Play) на панели инструментов, но ничего не изменилось.

Как я могу решить это? Как я могу сгенерировать правильный ключ хэша?

30
MikeKeepsOnShine

Вы выполнили шаги, которые Facebook предусматривает для создания приложения для входа?

Вам нужен «Ключ производственного ключа», полученный при запуске вашего хранилища ключей:

Из командной строки:

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

И добавьте этот ключ в настройках страницы приложения Facebook.

Дополнительная информация: https://developers.facebook.com/docs/Android/getting-started/

44
Abhi

Я нахожу решение. для MAC

Используйте это, чтобы получить YOUR_RELEASE_KEY_ALIAS:

keytool -list -keystore /Users/***/Documents/keystore/***.jks

и этот, чтобы получить ваш релиз keyhash:

keytool -exportcert -alias YOUR_RELEASE_KEY_ALIAS -keystore /Users/***/Documents/keystore/***.jks | openssl sha1 -binary | openssl base64

Меня устраивает. 

33
Rahim Rahimov

Самое простое решение.

1) Подпишите свой апк.

2) Подключите ваше устройство к машине и установите подписанный apk на реальном устройстве.

3) При нажатии входа в Facebook вы получите сообщение об ошибке «Недопустимый хэш ключа. Хэш ключа« xxx »не соответствует ни одной сохраненной клавише ...» на вашем logcat.

4) Скопируйте ключ хеша logcat и поместите этот ключ на developers.facebook.com/apps/104...../settings/

24
Bharat Hangarge

Нам нужно заменить слово «openssl» на путь одного файла внутри структуры openssl.

Итак, моя команда CMD:

C:\Program Files\Java\jre1.8.0_45\bin>keytool -exportcert -alias Informatheus -keystore C:\Users\Atendimento\Dropbox\AndroidKeystore\Keystore | C:\Users\Atendimento\Desktop\openssl\bin\openssl sha1 -binary | C:\Users\Atendimento\Desktop\openssl\bin\openssl base64

Это сработало.

7
Informatheus

// добавляем этот метод к вашему первому занятию, открываем журнал и ищем тег Base64, это Hashkey, я надеюсь, это поможет 

public void getHashkey(){
    try {
        PackageInfo info = getPackageManager().getPackageInfo(getApplicationContext().getPackageName(), PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures) {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());

            Log.i("Base64", Base64.encodeToString(md.digest(),Base64.NO_WRAP));
        }
    } catch (PackageManager.NameNotFoundException e) {
        Log.d("Name not found", e.getMessage(), e);

    } catch (NoSuchAlgorithmException e) {
        Log.d("Error", e.getMessage(), e);
    }
}
3
eng mohamed emam

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

Developer.Facebook

Также проверьте это SO сообщение. 

1
MajorGeek

Самый простой способ получить выпущенный apk хеш-ключ: Получить ключ выпущенного apk SHA1, используя следующую команду:

keytool -list -v -keystore keystore_path.jks -alias keystoreAlias

Тогда вы получите ключ SHA1. Скопируйте этот ключ и сгенерируйте хеш-ключ, используя следующий сайт:

Ссылка для получения ключа хеша

Вы получите вывод (base64): скопируйте его и используйте там, где хотите.

0
Pratibha Sarode

Для дальнейшего использования, если у вас уже есть приложение в Play Store, вы можете сделать следующее: 

  1. Перейти к Release Management 

  2. выберите App Signing в Release Management 

  3. Вы можете увидеть ключ SHA1 в шестнадцатеричном формате App signing certificate

  4. Скопируйте SHA1 в шестнадцатеричном формате и преобразуйте его в формат base64, вы можете использовать эту ссылку сделать это без части SHA1: в шестнадцатеричном формате.

  5. Перейдите в консоль разработчика Facebook и добавьте ключ (после преобразования в base 64) в settings —> basic –> key hashes.

0
Nadhir Falta