Приложение неверно настроено для входа в Facebook: проблема интеграции Android Facebook

Я интегрировал свое приложение с Facebook, и для этого я использую Facebook Graph API. Я получаю информацию о профиле и друзьях. Он отлично работает на моем устройстве, которое Android 2.3 (Gingerbread), но недавно мой клиент столкнулся с проблемой, пока он пытается подключиться в Facebook через мое приложение. У него Android & nbs 4.0 4.0 (Ice Cream Sandwich) на его устройстве. Когда он нажимает кнопку в приложении, которая выводит его на экран входа в Facebook, после входа в систему он получает сообщение:

Мое приложение неверно настроено для входа в Facebook. Нажмите "ОК", чтобы вернуться в приложение, не подключаясь к Facebook.

Facebook error message

Я не понимаю, в чем проблема, связана ли она с версией Android или чем-то.

Как я могу исправить эту проблему?

Ответ 1

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

Hack запускает диалог WebView в Facebook без SSO, и пользователь должен ввести свои учетные данные для входа в это диалоговое окно. Вредоносные приложения могут быстро украсть эту информацию. Всегда рекомендуется правильно внедрить Facebook SSO, чтобы убедиться, что ваше приложение защищено и защищает ваши конфиденциальные данные.

Перед тем, как добавить это сообщение об ошибке, диалоговое окно будет автоматически закрываться без предупреждения и терпеть неудачу. Мы добавили это сообщение об ошибке, чтобы визуально показать, что есть проблема с настройкой вашего приложения на панели инструментов приложения Facebook. Для Android, если вы проверите LogCat, вы увидите, что после нажатия "Okay" должно появиться сообщение об ошибке, которое будет отображаться более техническое описание того, что приводит к сбою аутентификации.

Например, если вы используете наш пример Hackbook и не поставляете свой собственный APP_ID в источнике и не добавляете свой хэш-ключ в панель мониторинга, вы увидите эту ошибку в LogCat после нажатия "Okay" в собственном SSO диалога (если для Util.ENABLE_LOG установлено значение true):

D/Facebook-authorize (24739): Ошибка входа: invalid_key: несоответствие клавиш Android. Ваш ключ "uk3udeH7vrOGNFH2FJjdJbdWJWI" не соответствует разрешенным клавишам, указанным в настройках вашего приложения. Проверьте настройки приложения на http://www.facebook.com/developers

Мы добавили визуальное сообщение об ошибке, чтобы помочь вам. Это, теоретически, не нарушает предыдущие реализации, если оно было правильно реализовано для начала. Если вы видите это сообщение об ошибке, это означает, что вы неправильно настроили настройки своего приложения на вашей информационной панели.
Дважды проверьте название Android-класса/пакета, хеш-ключи Android и т.д. Вы не увидите это сообщение, если все сделаете правильно.

В заключение вы получаете это сообщение об ошибке, потому что есть проблема с конфигурацией вашего приложения, например, несоответствие между хеш-ключами Android на панели управления. Прежде чем Facebook добавит это сообщение об ошибке, откроется диалоговое окно, затем автоматически закроется и выйдет из строя. Чтобы исправить это, проверьте свой LogCat на наличие сообщений об ошибках и убедитесь, что все реализовано правильно. Вы можете прочитать нашу документацию, чтобы убедиться, что у вас все правильно. Не используйте принятый ответ для этого вопроса.

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

Ответ 2

Попробуйте установить его так:

Сначала загрузите OpenSSL (если у вас есть 64-разрядная машина, вы должны скачать openssl-0.9.8e X64, а не последняя версия, openssl-0.9.8k X64, потому что выход будет недействительным). Извлеките файлы, создайте папку openssl, например, в C:/и скопируйте туда файлы.

Найдите свой путь к keytoo. Mine - это C:\Program Files\Java\jdk1.7.0_05\bin.

Найдите свой путь к debug.keystore. YHou может видеть, что такое путь, если вы открываете в Eclipse, в меню Window → Preferences → Android → Build, и вы увидите хранилище по умолчанию Debug: и путь.

Найдите свой путь к openssl. Mine - C:\openssl8e\bin/.

Откройте cmd и введите:

"C:\Program Files\Java\jdk1.7.0_05\bin\keytool" -exportcert -alias androiddebugkey -keystore "C:\Users\User.android\debug.keystore" | "C:\openssl8e\bin\openssl" sha1 -binary | "C:\openssl8e\bin\openssl" base64

A и затем нажмите Enter.

Вставить пароль: android

Вы получите свой хэш-ключ для debug.keystore.

Когда вы экспортируете подписанный APK и создаете хранилище ключей для приложения, просто замените в псевдониме cmd debugkeystore своим псевдонимом для приложение, путь к хранилищу ключей, путь к вашему вновь созданному хранилищу ключей для приложения и вставьте пароль для вашего app.keystore, и вы получите новый хэш-ключ для вашего подписанного приложения.

Ответ 3

Ответ от Джесси Чэнь в порядке. Facebooks SDK отлично работает, не разбивайте его.

Я снова столкнулся с этой проблемой и выяснил, что документация по SDK для Facebook исправлена ​​и сейчас очень хорошо. Теперь он определяет, как отлаживать и отпускать ключи хэша могут быть установлены; просто делайте, как говорится.

Ниже мой старый рассказ. Отсутствует, что вы можете установить два хеш-ключа, один для отладки и один для подписанного, выпущенного приложения для старого Play Store.


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

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

Это отлично работает, когда вы выполняете или запускаете приложение из Eclipse.

Но если вы публикуете свое приложение в Andoid Play, вы должны использовать свой собственный ключ издателя для экспорта подписанного файла .apk. С этим .apk хэш в консоли приложения Facebook уже недействителен! Вы должны получить хэш для ключа разработчика следующим образом:

keytool -exportcert -alias <developer alias> -keystore ~/.android/<developer keystore> | openssl sha1 -binary | openssl base64

И добавьте его в Android-хеш в консоли приложений Facebook для опубликованного приложения. После этого SSO снова отлично работает для вашего подписанного файла .apk.

Ответ 4

Из того, что я мог собрать, это проблема Facebook и сообщалось. Но проблема остается.

В этом отношении (проверено на 2.3.3) необходимо взломать SDK для Facebook, найти для 2 авторизации методы и изменить DEFAULT_AUTH_ACTIVITY_CODE на FORCE_DIALOG_AUTH. Это отключит функцию единого входа.

Если вы предпочитаете

public void authorize(Activity activity, String[] permissions,
            int activityCode, final DialogListener listener) 

и отключите часть startSingleSignOn. Это предпочтительнее, потому что в конечном итоге Facebook решит проблему, и вам остается только вернуть старую константу.

ИЗМЕНИТЬ

Это решение повышает проблемы безопасности. Проверьте ответ Джесси Чэнь.

Ответ 5

Я столкнулся с той же проблемой, проведя 24 часа и много поиска, мы используем этот метод для решения моей проблемы.

  • Проверьте текущий идентификатор пакета Xcode например: com.yourcompanyname.yourappname

  • используйте тот же идентификатор com.yourcompanyname.yourappname для создания приложения в Facebook, см. вложение.

enter image description here

Ответ 6

У меня была эта проблема всего несколько минут назад на 4.0.4, и, похоже, она разрешилась сама.

Ответ 7

Хотя и поздно, все же полезно: * Здесь способ коррекции (для отладочного ключа, соответственно, для выпуска): *

keytool -exportcert -alias androiddebugkey -keystore "C:\Users\<User>\.android\debug.keystore" > <Drive letter>:\debug.txt
openssl sha1 -binary "<Drive letter>:\debug.txt" > "<Drive letter>:\debug_sha.txt"
openssl base64 -in "<Drive letter>:\debug_sha.txt" > "<Drive letter>:\debug_base64.txt"

Хэш находится в последнем сгенерированном файле: debug_base64.txt.... откройте его и скопируйте хэш.

Не забудьте заменить "" и с вашим именем пользователя и буквой диска по вашему выбору

Ответ 8

Когда вы создаете хеш-ключ, вы можете получить что-то, что имеет знак равенства "=" в конце, например ga0RGNYHvNM5d0SLGQfpQWAPGJ8 =. Хотя Facebook с радостью принимает знак равенства как часть ключевого хеша, вы должны удалить его, чтобы он работал.

Кроме того, проверьте принятый ответ Android Facebook SDK 3.0 дает "remote_app_id не соответствует сохраненному идентификатору " при входе в систему: при получении хэша ключа для хранилища отладки используйте пароль" андроид". В противном случае ключевой хеш будет неправильным, и вы получите ошибку, указанную в вопросе (будьте милы и проголосуйте за ответ там, если это вам помогло.)

Ответ 9

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

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

keytool -exportcert -alias [Alias of your keystore] -keystore [Path to keystore] | openssl sha1 -binary | openssl base64

Ответ 10

Что касается приложений, подписанных с хранилищем хранилища OWN: Потратив несколько часов на решение этой проблемы, я наконец получил ее и хочу дать ответ тем, кто все еще страдает:

Мои шаги: Я подписал приложение через eclipse со своим собственным файлом хранилища ключей (NOT debug.keystore). Через командную строку и известные команды (keytool -exportcert -alias -keystore ~ ​​/.android/| openssl sha1 -binary | openssl base64) Я успешно получил хэш ключа. Вставил ключевой хеш в приборной панели dev, ждал несколько минут → Все тот же ERROR (как указано в вопросе выше). я попробовал несколько различных клавишных инструментов, на нескольких jdks и т.д. ничего не изменилось.

Решение: Я включил debuggable в манифесте, включил отладку в facebook sdk. затем я подписал apk с моим собственным хранилищем ключей и загрузил его на реальном устройстве. я подключил устройство через usb и открыл перспективу DDMS, чтобы увидеть logcat на устройстве.
Я начал свое приложение и дал сообщение об ошибке. Он выводит ключ, полностью отличный от ключа, созданного keytool. Я взял этот ключ из logcat, вставил его в dev-панель и voila → ВСЕ РАБОТЫ

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

Ответ 11

В системе Debian, такой как ubuntu, используйте keytool of java, найденный в каталоге /usr/lib/jvm/jdk*.*.*/bin/keytool, и сгенерируйте как это

/usr/lib/jvm/jdk1.7.0/bin/keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

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

Ответ 12

Обычно эту проблему можно решить двумя проверками:

  • флаг в консоли facebook для публикации в реальном времени конфигурации facebook
  • Несоответствие ключей api

Ответ 13

Я сделал исключение Toast для исключений и обнаружил, что он выбрасывает исключение разницы ключей, сегодня добавил ключ на странице приложения FB и отлично работает

Ответ 14

Я получил ту же ошибку несколько дней назад. В моем случае это было связано с несоответствием клавиш Android. Вот как я исправил это, если это может вам помочь:

Откройте Util.java в SDK для Facebook, установите private static boolean ENABLE_LOG = true;. Теперь запустите приложение и введите свой идентификатор и пароль электронной почты. Facebook отправляет обратно подпись, если есть несоответствие ключа. Вы найдете этот ключ (подпись) в LogCat. Просто скопируйте этот ключ и вставьте его в панель инструментов приложения. Это должно решить проблему. Не забудьте установить private static boolean ENABLE_LOG = true; обратно на значение false.

Ответ 15

Также возникла эта проблема.

Просто перейдите на страницу разработчиков Facebook, чтобы начать работу здесь

и выполните шаг 4 - вещь с командной строкой.

Работал для меня.

Enjoy.

Ответ 16

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

После того, как у вас есть приложение в Play Маркете, вы будете использовать производственный ключ для подписания приложения. Это также означает, что вы должны получить ключевой хэш производственного ключа, например, для ключа отладки, и добавить его как второй хэш в список собственных хэшей приложений.

просто помните, как работает ключевой хеш: keytool -exportcert -alias -keystore ~ ​​/keys/android_keystore | openssl sha1 -binary | openssl base64

Надеюсь, что это поможет!

Ответ 17

У меня была аналогичная проблема, но для iOS.

Решение связано с настройкой приложения Facebook на панели разработчика для разработчиков Facebook.

Для iOS нужно сделать 2 вещи:

  • Включено Вход в Facebook

  • Идентификатор пакета должен совпадать с приложением

Ответ 18

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