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

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

4b9b3361

Ответ 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, поэтому попробуйте, возможно, это то, что вам не хватает.

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