Перенаправление в диалог аутентификации - "Произошла ошибка. Пожалуйста, попробуйте позже"

Почему это всегда случается со мной?

Это происходит после того, как мое приложение проверило логин пользователя и перенаправило пользователя на страницу аутентификации:

https://www.facebook.com/dialog/oauth?client_id=XXX&redirect_uri=http%3A%2F%2Fexample.com%2Fmyappname%2F&state=YYYYYY&scope=offline_access%2Cpublish_actions

Но вместо того, чтобы показывать страницу авторизации, Facebook показывает страницу ошибки с

Произошла ошибка. Пожалуйста, попробуйте позже.

Есть ли какая-либо конфигурация, которую я должен сделать перед попыткой аутентификации моих пользователей?

Все делается с помощью PHP с использованием классов PHP-SDK.

34 ответа

Решение

У меня была такая же проблема после изменения домена моего сайта. Хотя я правильно изменил параметр request_uri и обновил настройки своего приложения новым доменом, ошибка продолжала появляться. Затем я понял, что идентификатор и секретный идентификатор моего приложения Facebook автоматически изменились без предупреждения!! Все снова заработало, используя новый идентификатор.

У меня была такая же проблема, как и у вас.

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

Это происходило и со мной, но все ключи API, секреты и прочее были верны. Я обнаружил, что мое приложение работает в режиме песочницы. Перейдите в настройки своего приложения на https://developers.facebook.com/, перейдите на вкладку дополнительных настроек и проверьте, находится ли ваше приложение в режиме песочницы. Если он отключен, попробуйте еще раз. Дайте нам знать, если это работает.

Я получил эту ошибку, потому что я начинал с http://mysite.com, но указал http://WWW.mysite.com в моих настройках Facebook - имел значение www... В итоге я решил использовать.httpaccess, чтобы всегда убивать "www", и указывать FB на http://mysite.com

наихудший. поддомен. Когда-либо.: И)

При работе с диалогами Facebook предоставляет атрибут show_error, который по умолчанию имеет значение no но можно установить на true в среде разработки и действительно полезен для целей отладки.

show_error - Если для этого параметра установлено значение true, код ошибки и описание ошибки будут отображаться в случае ошибки.

Инструкции по его использованию можно найти в Документах Facebook.

Я отлаживал "Произошла ошибка. Пожалуйста, попробуйте позже." диалог, прежде чем я нашел этот атрибут в документах. Как только я начал использовать его, я мог видеть следующее сообщение:

Код ошибки API: 191

Описание ошибки API: указанный URL-адрес не принадлежит приложению

Сообщение об ошибке: redirect_uri не принадлежит приложению.

Для меня это произошло потому, что созданный мной "тестовый пользователь" был частью отдельного приложения. Я создал тестового пользователя для ЭТОГО приложения, и он начал работать нормально.

Я знаю, что это глупо, но это может спасти кого-то еще от неприятностей.

У меня такая же проблема; оказалось, что FB требует строку appID, а не int...

//DOESNT WORK:
$facebook = new Facebook(array(
  'appId'  => 147XXXXXXXXXXX,
  'secret' => 'XXXXXXXXXXXXXX',
));

// WORKS:
$facebook = new Facebook(array(
  'appId'  => '147XXXXXXXXXXX',
  'secret' => 'XXXXXXXXXXXXXX',
));

Согласно документации OAUTH Dialog:

*redirect_uri: URL-адрес для перенаправления после нажатия пользователем кнопки в диалоговом окне. Указанный вами URL-адрес должен быть URL-адресом с тем же базовым доменом, который указан в настройках вашего приложения, и URL-адресом Canvas в виде https://apps.facebook.com/YOUR_APP_NAMESPACE... *

Я создаю oauth-ссылки динамически, чтобы запросить у пользователя дополнительные разрешения, если это необходимо, и я понял, что даже если вы перенаправляете на https://apps.facebook.com/YOUR_APP_NAMESPACE вам необходимо настроить параметры домена приложения и веб-сайта в своем администрирование приложений. Я установил домен на facebook.com, а веб-сайт на корневой URL facebooks.

Теперь моя ссылка на диалог oauth работает нормально - даже в режиме песочницы.

Для меня решение состоит в том, чтобы включить опцию "Аутентифицированные рефералы". Это действительно исправлено после этого.

Исправить ошибку прав доступа

У меня была именно эта проблема в приложении Page Tab, и я не мог понять, в чем проблема. Это сработало на моей тестовой странице, но как только я запустил его, оно не сработало. В конце концов я обнаружил, что исправил проблему, поместив фактический URL на вкладку страницы (т.е. http://www.facebook.com/<"page_name">/app_<"app_id">) в "URL сайта" в разделе "Веб-сайт". Это не имеет никакого смысла. Но это сработало:-)

Убедитесь, что ваше приложение настроено на использование соответствующего URL и домена вашего сайта. Это может быть этим.

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

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

Мой клиент создал 2 фальшивых аккаунта на Facebook и сказал мне, что они не работают. Но он забыл подтвердить адреса электронной почты этих учетных записей (письма, отправленные Facebook, отправлялись в его папку со спамом, и он не заметил).

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

Ура!

Другая возможная ошибка: если вы напрямую скопировали код из примера Facebook SDK, вы можете получить такую ​​же ошибку, несмотря на то, что все правильно. http://developers.facebook.com/docs/reference/php/

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

require_once("facebook.php");

$config = array();
$config['appId'] = 'YOUR_APP_ID';
$config['secret'] = 'YOUR_APP_SECRET';
$config['fileUpload'] = false; // optional

$facebook = new Facebook($config);

Проблема была решена после того, как я обновил "appID" и "secret", а затем перенес изменение обратно на heroku (то есть - "git push heroku master")

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

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

Также была проблема с неправильной ссылкой перенаправления: у меня была ссылка, начинающаяся с "https://apps.facebook.com?myapplication".... но после авторизации перенаправление привело бы меня к "apps.facebook.com/Myapplication" и, следовательно, я получаю сообщение, описанное выше:"Произошла ошибка. Попробуйте позже". поскольку "apps.facebook.com"... означает "http://apps.facebook.com/Myapp", а не "HTTPS://apps.facebook.com/,..."

Решение: зашел в настройки моего приложения в разделе разработчиков Facebook. Нажал "Редактировать". В левом меню выбрано "Разрешения" (по умолчанию меню установлено на "Основные"), а во вновь открытом наборе настроек изменил мой "Параметр токена аутентификации" с "Строка запроса" на "Фрагмент URL".

Это сработало! После завершения авторизации пользователи попадают на "https://apps.facebook.com/myapp..."

Я только что столкнулся с этой проблемой сам. Я разрабатываю приложение для себя, поэтому мой хост - localhost. Не было очевидно, как настроить localhost в конфигурации приложения. Если вы хотите разрабатывать локально, настройте свое приложение, выполнив следующие действия:

  1. Перейдите к месту, где вы управляете своим приложением Facebook. В частности, вы хотите быть в "Basic" в меню "Настройки".
  2. Добавьте "localhost" в "Домен приложения".
  3. В разделе "Выберите способ интеграции вашего приложения с Facebook" выберите "Веб-сайт" и введите "http://localhost/".

Сохраните и подождите пару минут, чтобы информация распространялась, хотя она сразу сработала для меня.

Ответ за 2015 год

Режим песочницы исчез.

Продолжать My Apps -> Your App -> Status & Review и измените ползунок на да для:

Вы хотите сделать это приложение и все его живые функции доступными для широкой публики?

введите описание изображения здесь

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

Я наложил ограничение на приложение, которое может использовать только резиденция Соединенных Штатов. Я работал из Канады, когда появилось это сообщение об ошибке. После снятия ограничения все заработало.

У меня была та же проблема, и я исправил ее, добавив param &display=touch к URL

попробуй, может поможет

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

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

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

Я столкнулся с той же проблемой, и причина была в том, что мой app was not live и общедоступный.

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

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

Причина в моем случае была совершенно другой. Я пытался открыть диалоговое окно канала автоматически после загрузки страницы. И 9 раз из 10 это отображало эту ошибку. Сначала я добавил show_error: true параметр, предложенный @Peter Roome, но это не помогло, отображая 104: Invalid signatureне описательный вообще.

Тогда я выяснил причину. Код был в $(document).ready Функция jQuery. И кажется, что некоторые вещи в Facebook еще не были загружены в тот момент, когда код должен был быть выполнен. Я переместил код в $(window).load блок (который выполняется после загрузки всего содержимого страницы), и проблема была решена.

У меня была эта ошибка, потому что я использовал redirect_url в качестве параметра вместо redirect_uri,

На странице документа Аутентификация на стороне сервера сказано использовать redirect_url:

https://www.facebook.com/dialog/oauth?
    client_id=YOUR_APP_ID
   &redirect_url=YOUR_REDIRECT_URI
   &scope=COMMA_SEPARATED_LIST_OF_PERMISSION_NAMES
   &state=SOME_ARBITRARY_BUT_UNIQUE_STRING

Но это неверно. Документ OAuth Dialog говорит использовать redirect_uri вместо этого, который работает, поэтому я предполагаю, что вы можете использовать только одно, а не другое:

https://www.facebook.com/dialog/oauth/?
    client_id=YOUR_APP_ID
    &redirect_uri=YOUR_REDIRECT_URL
    &state=YOUR_STATE_VALUE
    &scope=COMMA_SEPARATED_LIST_OF_PERMISSION_NAMES

У меня была та же проблема, и причина была другой:

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

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

Проверьте ваш appid и убедитесь, что вы обновили URL своего сайта. Мобильный сайт по адресу https://developers.facebook.com/

В моем случае была проблема с возрастом учетной записи, используемой с приложением.

Если приложение FB содержит алкогольный контент, то пользователи FB младше 21 года при попытке авторизации выдают ошибку.

Я перепробовал все ответы, упомянутые здесь. Но это не сработало. Мне пришлось удалить и создать снова. Я предполагаю, что это было связано с новым "Аутентифицированным рефералом". Если вы добавили объекты Open Graph, которые не были утверждены, это может привести к ошибке.

Вам необходимо указать http:// в вашем RIRIRECT URI.

Другие вопросы по тегам