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) в панели управления, но ничего не изменилось.
Как я могу это решить? Как я могу сгенерировать хеш-ключ правого релиза?
Ответы
Ответ 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