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


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

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

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

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

18 76

18 ответов:

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

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

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

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

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

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

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

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

попробуйте установить его следующим образом:

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

найти свой путь к keytoo. Моя-это C:\Program файлы\Java\jdk1.7.0_05\bin.

найти свой путь к debug.keystore. YHou вижу что такое путь, если вы открываете в меню Eclipse,окно ->предпочтения ->Android ->построить, и вы увидите хранилище ключей отладки по умолчанию:-и в путь.

найти свой путь к openssl. Шахта C:\openssl8e\bin/.

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

"C:\Program файлы\папку Java\jdk1.7.0_05\бин\ключей" -exportcert -псевдоним androiddebugkey -хранилище "C:\Users\User.android\debug.хранилище" | "C:\openssl8e\bin\openssl" sha1-binary | "C:\openssl8e\bin\openssl" base64

и нажмите клавишу введите.

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

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

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

ответ от Джесси Чена в порядке. Верит СДК работает отлично, не нарушайте его.

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

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


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

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

это прекрасно работает, когда вы dubugging или запущенному приложению затмение.

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

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

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

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

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

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

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

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

EDIT

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

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

  1. проверьте текущий идентификатор пакета проекта Xcode например : com.ваше имя компании.yourappname

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

enter image description here

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

хотя и поздно, все равно полезно: * вот способ corerct сделать(для ключа отладки, соответственно изменить для выпуска):*

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....откройте его и скопируйте хэш.

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

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

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

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

мои шаги: Я подписал свое приложение через eclipse с моим собственным файлом хранилища ключей (не отлаживать.хранилище ключей). Через командную строку и известные команды (keytool-exportcert-alias-keystore~/.андроид/ | в OpenSSL SHA1-по бинарные | в OpenSSL base64-кодировке) я successfulluy получил ключ хэша. Вставил хэш ключа в dev приборная панель, подождал несколько минут - > все та же ошибка (как указано в вопросе выше). я попробовал несколько разных keytools, на нескольких jdks и т. д... ничего не изменилось.

решение: Я включил debuggable в манифесте, включил отладку в Facebook sdk. затем я подписал apk с моим собственным хранилищем ключей и загрузил его на реальное устройство. я подключил устройство через usb и открыл перспективу DDMS, чтобы увидеть logcat на устройстве.
Я запустил свое приложение и позволил появиться сообщению об ошибке. Он распечатывает ключ полностью отличается от ключа, сгенерированного ключей. Я взял этот ключ из logcat, вставил его в dev dashboard и вуаля - > все работает

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

в системе 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.

обычно эта проблема может быть решена с помощью двух проверок:

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

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

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

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

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

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

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

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

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

наслаждайтесь.

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

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

просто чтобы помнить, как работает хэш ключа: ключей -exportcert -Алиас-хранилище ~/ключи/android_keystore | в OpenSSL SHA1-по двоичной | OpenSSL с помощью base64

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

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

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

для iOS, 2 вещи должны быть сделаны:

  1. Включен Вход В Facebook

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

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

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

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