Ключ-хэш не совпадает во время входа в facebook в андроид
В моем приложении используется простой интерфейс для входа в facebook. Я ввел keyhash в панель инструментов приложения, key_hash, и мне удалось войти в систему успешно. Теперь я опубликовал приложение и попытался войти в систему, но он покажет сообщение об ошибке в веб-представлении, в котором говорится, что
"Invalid android_key parameter. The key rX6qeRitkFCWui3de74rxB_qc1s does not match any allowed key. Configure your app key hashes at http://developers.facebook.com/apps/<my_fb_app_id>".
На самом деле rX6qeRitkFCWui3de74rxB_qc1s не является моим ключевым хэшем, который у меня есть в родном приложении. Откуда он? В любом случае я ввел этот keyhash и в родное приложение, но получал такое же сообщение об ошибке и не мог войти в систему. Где я ошибаюсь? Пожалуйста, помогите мне.
Ответы
Ответ 1
Вы можете генерировать хэш-ключ через кодирование, вы просто делаете одно. Вставьте этот код в основной класс (первый класс), затем запустите приложение и проверьте логарифм, где вы найдете хеш-ключ.
Еще одна вещь, замените это имя пакета "com.example.creeper" на имя вашего пакета:
try{
PackageInfo info = getPackageManager().getPackageInfo(
"com.example.creeper", PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.d("KeyHash:",Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
} catch (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
Ответ 2
Если вы столкнулись с этой проблемой, поместите этот ключ в свой developer.facebook.com
![введите описание изображения здесь]()
Затем убедитесь, что ваше приложение в прямом эфире на developer.facebook.com
Этот зеленый круг указывает, что приложение в прямом эфире
![введите описание изображения здесь]()
Если это не так, выполните следующие два шага, чтобы сделать ваше приложение живым
Шаг 1 Перейдите в свое приложение → и добавьте контактную электронную почту, затем примените сохранение изменений
Setp 2. Затем перейдите в режим Status & Review и убедитесь, что этот переключатель - Yes, я добавил снимок экрана
![введите описание изображения здесь]()
Ответ 3
Попробуйте создать новый keyhash, используя файл кэша приложения, используемый для подписания опубликованного приложения.
Эта проблема может быть вызвана предоставлением keyhash, сгенерированным вашим хранилищем отладки, которое будет работать только с неподписанными файлами apk.
пожалуйста, обратитесь к шагу 5 следующей ссылки, чтобы понять, как генерировать keyhash
https://developers.facebook.com/docs/getting-started/facebook-sdk-for-android/3.0/
и обновите его с помощью страницы настроек приложения в facebook.
Также проверьте правильность имени пакета и имени класса.
Ответ 4
Использование хранилища ключей Debug, включая android debug.keystore, присутствующие в папке .android, порождает странную проблему; вход в систему с использованием кнопки входа в facebook в приложении для Android будет выполняться совершенно по желанию в первый раз. Но когда когда-либо я вышел из системы и попытался войти в систему, это вызовет ошибку: "Это приложение не имеет настроенных хэшей для Android. Перейдите по адресу http://....
Создание Keystore с помощью команды keytool (keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -sigalg SHA1withRSA -keysize 2048 -validity 10000) и помещая это хранилище ключей в мои проекты, самую верхнюю родительскую папку и делая следующую запись в проектах build.gradle файл решил проблему:
signingConfigs {
release {
storeFile file("my-release-key.keystore")
storePassword "passpass"
keyAlias "alias_name"
keyPassword "passpass"
} }
Обратите внимание, что вы всегда используете следующий метод внутри onCreate() вашей андроидной активности, чтобы получить ключевое значение хеша (зарегистрироваться на сайте разработчика .facebook.com вашего приложения) вместо использования командной строки (keytool -exportcert - alias -keystore | openssl sha1 -binary | openssl base64), чтобы генерировать хеш-значение, поскольку в командной строке в некоторых случаях может возникнуть неправильный хэш ключа:
public void showHashKey(Context context) {
try {
PackageInfo info = context.getPackageManager().getPackageInfo("com.superreceptionist",
PackageManager.GET_SIGNATURES);
for (android.content.pm.Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
String sign=Base64.encodeToString(md.digest(), Base64.DEFAULT);
Log.e("KeyHash:", sign);
// Toast.makeText(getApplicationContext(),sign, Toast.LENGTH_LONG).show();
}
Log.d("KeyHash:", "****------------***");
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
}
Ответ 5
Вам нужно сделать keyhash из вашего debug.keystore или если вы подписали его с ключом освобождения, чем с этим.
Убедитесь, что ваше псевдоним также правильно. Это влияет на ваш keyhash.
Проверьте это:
Как создать хэш-код Facebook?
Ответ 6
Например, ключ, указанный в ошибке: "rX6qeRitkFCWui3de74rxB_qc1s"
, затем список хеш-кода в Facebook, вы пытаетесь поместить этот код в конце конца "="
, чтобы получить rX6qeRitkFCWui3de74rxB_qc1s=
и посмотреть, работает ли он.
Ответ 7
Попробуйте создать новый хэш ключа и отредактируйте его в разработчиках facebook и зарегистрируйте приложение с новым хешем ключа.
Ответ 8
Вот версия С# для тех, кто пытается получить образец Xamarin.
public void showHashKey(Context context)
{
try {
PackageInfo info = context.PackageManager.GetPackageInfo("com.facebook.samples.hellofacebook", PackageInfoFlags.Signatures);
foreach (Android.Content.PM.Signature signature in info.Signatures) {
MessageDigest md = MessageDigest.GetInstance("SHA");
md.Update(signature.ToByteArray());
var sign = Base64.EncodeToString(md.Digest(), Base64Flags.Default);
Log.Info("KeyHash:", sign);
}
Log..Info("KeyHash:", "****------------***");
} catch (PackageManager.NameNotFoundException e) {
e.PrintStackTrace();
} catch (NoSuchAlgorithmException e) {
e.PrintStackTrace();
}
}
Ответ 9
Для меня, когда я запускал команду keytool, и она запрашивала у меня пароль, я интерпретировал это как означающий, что мне нужно выбрать пароль для хэша. Фактически, вам необходимо предоставить пароль в хранилище ключей (место хранения хэша). Смешная вещь (не смешно, "ха-ха" ), она будет принимать любой пароль и выводить хэш для вас. Это заставило мой хэш не совпадать. К счастью, я давно сохранил свой пароль в OS X keychain, поэтому нашел, что это на самом деле. Я попробовал правильный пароль и получил другой хэш, который сработал. Обратите внимание, что пароль хранилища ключей по умолчанию android
, поэтому попробуйте, возможно, это то, что вам не хватает.
Я действительно думаю, что неправильный пароль должен отклонить вас, а не выводить хэш, интересно, это ли ошибка - если да, оставьте ссылку с сообщением об ошибке в комментариях.