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

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) в панели управления, но ничего не изменилось.

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

4b9b3361

Ответ 1

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

Вам понадобится "Production keyhash", полученная при запуске своего хранилища ключей:

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

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

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

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

Ответ 2

Я нахожу решение. для 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

Это работает для меня.

Ответ 3

Простейшее решение.

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

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

3) Когда нажата функция facebook, вы получите сообщение об ошибке "Недопустимый хэш ключа. Хэш ххх" не совпадает с любым сохраненным ключом... "на вашем логарифме.

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

Ответ 4

Нам нужно заменить слово "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

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

Ответ 5

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

Developer.Facebook

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

Ответ 6

//добавьте этот метод в свою первую активность и откройте журнал и найдите тег Base64, это hashkey я hoop it help

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);
    }
}

Ответ 7

keytool -exportcert -alias aliasName -keystore C:\my_release_keystroke_info.jks | openssl sha1 -binary | openssl base64