Ошибка входа в API Facebook с приложением FB, установленным на телефоне

Я создаю приложение, которое будет поддерживать Facebook. Я загрузил facebook API и их образец под названием «Hackbook» из оригинальных репозиториев Git. Проблема с входом в систему - если оригинальное приложение FB не установлено на телефоне, вход проходит через настраиваемый диалог и все работает, но если приложение FB установлено, Hackbook автоматически перенаправляет на оригинальное приложение FB, а затем ничего не происходит. Войти невозможно. Я тестировал это на пяти разных телефонах, и всегда была одна и та же проблема.


person virusss8    schedule 09.05.2012    source источник


Ответы (5)


У меня была аналогичная проблема. В моем случае я не создал хеш-ключ, используя свой ключ подписи. Я только что создал один хэш-ключ, используя ключ подписи debug.keystore по умолчанию.

Как только я создал хэш-ключ, используя ключ подписи выпуска приложения, эта проблема была решена. Если вы еще этого не сделали, создайте новый хеш-ключ, используя свой ключ подписи (для загрузки на рынок) и добавьте его в панель управления facebook вашего приложения.

Надеюсь это поможет.

person Siddharth Lele    schedule 09.05.2012
comment
Я добавил этот хеш-ключ в панель управления, но проблема все еще здесь. Должен ли я где-то добавить хеш-ключ в fb api? - person virusss8; 10.05.2012
comment
@virusss8: вам не нужно добавлять хеш-ключ в свое приложение. Выполните этот шаг и сообщите мне результат. Откройте файл класса Util в вашем facebook-sdk и измените «private static boolean ENABLE_LOG = false» на «true». Теперь подключите телефон к компьютеру для разработки и запустите приложение, созданное с помощью подписанного apk, и войдите в систему. Держите окно DDMS открытым и посмотрите, не выдает ли оно ошибку. - person Siddharth Lele; 10.05.2012
comment
D/Facebook-authorize(25124): Ошибка входа: invalid_key: несоответствие ключа Android. Ваш ключ **********real*key************ не соответствует разрешенным ключам, указанным в настройках вашего приложения. Проверьте настройки своего приложения на странице facebook.com/developers, но я нигде не устанавливал этот ключ. Что это за ключ??? - person virusss8; 10.05.2012
comment
Это ключ, который вы должны поместить в панель управления приложениями. Скопируйте ключ, указанный в журнале, и замените последний введенный вами ключ (с помощью ключа подписи) на этот ключ из журнала DDMS. - person Siddharth Lele; 10.05.2012
comment
В любое время, парень. ;-) Рад, что смог помочь. - person Siddharth Lele; 10.05.2012
comment
@UceMAN Я не могу найти частное статическое логическое значение ENABLE_LOG = false в моем классе FacebookSDK Util. Я использую FacebookSDK 3.0.1. Не могли бы вы мне помочь? Я хочу войти в свое приложение с установленным приложением Facebook. И я использую appId, созданный хранилищем ключей выпуска. - person anddev; 05.07.2013
comment
@anddev: К сожалению, это не работает с новым SDK. Используйте метод, указанный в разделе Решение 1 здесь: stackoverflow.com/a/13283088/450534. Это сделает работу. - person Siddharth Lele; 05.07.2013
comment
@IceMAN Я получил хеш-ключ. Спасибо. Не могли бы вы помочь мне в моем запросе? Я разместил свой вопрос здесь: stackoverflow.com/questions/17464648/ Очень приятно, если вы дадите мне решение, пожалуйста, помогите мне. - person anddev; 05.07.2013
comment
@SiddharthLele Вы обновили свой apk в GooglePlay на новый или просто заменили хэш-ключ в настройках приложения на Facebook? Я только что заменил хэш-ключ на Facebook, подождал несколько минут, попробовал еще раз (с уже опубликованным ранее приложением), и все еще не работает? - person AlexAndro; 08.09.2013
comment
@AlexAndro: не нужно обновлять APK. Просто добавьте новый хэш-ключ, и все должно быть хорошо. Пока для приложения используется правильный ключ подписи, а также хеш-ключ, обновлять APK не нужно. Требуется немного времени, чтобы отфильтровать систему FB. По моему опыту, мне пришлось ждать почти 4 часа, прежде чем мое приложение начало работать должным образом. - person Siddharth Lele; 08.09.2013

Я трудился два дня и наконец получил решение, это НЕПРАВИЛЬНЫЙ способ получить хеш-ключ -

keytool -exportcert -alias *<your _alias_name>* -keystore *<key_store_path>* | [openssl_bin_directory]\openssl sha1 -binary | [openssl_bin_directory]\openssl base64

Правильный способ — ввести эти 3 строки по одной в cmd. После первой строки вам будет предложено ввести пароль хранилища ключей.

keytool -exportcert -alias *<your _alias_name>* -keystore *<key_store_path>* > [openssl_bin_directory]\debug.txt
[openssl_bin_directory]\openssl sha1 -binary [openssl_bin_directory]\debug.txt > [openssl_bin_directory]\debug_sha.txt
[openssl_bin_directory]\openssl base64 -in [openssl_bin_directory]\debug_sha.txt > [openssl_bin_directory]\debug_base64.txt

Если хотите узнать подробности, ПРАВИЛЬНЫЙ способ описан здесь -

http://facebook.stackoverflow.com/questions/13281913/app-is-misconfigured-for-facebook-login-with-release-key-hash

или здесь

Facebook Android генерирует хэш ключа

person Khobaib    schedule 15.11.2012
comment
Почему вы пишете неправильное в тексте, а не правильное? Я почти использовал его, лол, но спасибо за ссылку на правильный - person Cruceo; 03.08.2013
comment
СПАСИБО только что провел последние 3 часа, пытаясь понять это - person Cam Connor; 15.12.2013

Получите хэш-ключ, используя эту функцию для обоих (отладка и выпуск apk) и поместите его в свое приложение на странице developer.facebook.com/apps.

private void calculateHashKey(String yourPackageName) {
    try {
        PackageInfo info = getPackageManager().getPackageInfo(
                yourPackageName,
                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) {
        e.printStackTrace();
    } catch (NoSuchAlgorithmException e) {
        e.printStackTrace();
    }
}

это мне очень помогает .. Надеюсь, это поможет и вам ..

person jignesh    schedule 29.04.2014

Я исправил эту проблему. После получения хэша ключа с помощью keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64 я успешно вошел в систему в первый раз в режиме деблокирования... Затем во второй раз я получил общую ошибку Ваш ключ "*********real*key************" не соответствует разрешенным ключам, указанным в настройках вашего приложения.

Просто используйте "*********real*key************", который Facebook выдает в сообщении об ошибке. Я успешно вошел в систему сейчас в режиме выпуска. Поэтому убедитесь, что при вводе этого ключа вы используете точно такой же ключ. ПИСЬМА I, small(L) i.e (l) доставят вам неприятности. Я сделал два ключа, в первом ключе я использовал small(L) i.e (l), а во втором ключе я использовал I. и поместил эти ключи в приложение разработчика.
Теперь он работает ....

person Ankush Jaral    schedule 02.06.2016
comment
Это была точная проблема в моем случае ... единственное решение, которое сработало! и часть про маленькую букву «L» верна, а также большую «I» (которая может выглядеть как маленькая «L» в некоторых шрифтах.. - person Matan Dahan; 25.04.2017

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

Я добавил следующую строку перед входом в систему, и она отлично работает.

LoginManager.getInstance().logOut();
person Akash Bisariya    schedule 22.09.2017