Почему это всегда происходит со мной?
Это происходит после того, как мое приложение проверяет вход пользователя пользователя и перенаправляет пользователя на страницу аутентификации:
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.
У меня была такая же проблема после изменения домена моего сайта. Хотя я правильно изменил параметр request_uri и обновил настройки своего приложения в новом домене, ошибка продолжалась. Затем я понял, что идентификатор и идентификатор SECRET моего Facebook APP автоматически изменились без предупреждения! Все это снова начало работать, используя новый идентификатор.
У меня была такая же проблема, как и вы.
На странице «Приложения разработчиков Facebook» убедитесь, что режим «Песочница» отключен.
Это происходило и со мной, но все ключи, секреты и прочее были правильными. Я обнаружил, что мое приложение работает в режиме песочницы. Перейдите в настройки своего приложения на https://developers.facebook.com/, перейдите на вкладку дополнительных настроек и проверьте, находится ли ваше приложение в режиме песочницы. Если он отключен и повторите попытку. Сообщите нам, если это сработает.
Я получал эту ошибку, потому что начинал с http://mysite.com
, но в настройках моего Facebook был указан http://WWW.mysite.com
– WWW важно … Я решил решить, используя .httpaccess для всегда убивайте «www» и указывайте FB на http://mysite.com
наихудший. поддомен. Когда-либо. : И)
При работе с Dialogues 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', ));
Для меня это произошло потому, что созданный мной «тестовый пользователь» был частью отдельного приложения. Я создал тестового пользователя для этого приложения, и он начал работать нормально.
Глупо с моей стороны, я знаю, но это может спасти кого-то еще некоторые проблемы.
Убедитесь, что ваше приложение настроено на использование соответствующего URL и домена вашего сайта. Это может быть так.
Согласно документации OAUTH Dialog:
* redirect_uri: URL-адрес для перенаправления после того, как пользователь нажимает кнопку в диалоговом окне. Указанный URL должен быть URL-адресом с тем же базовым доменом, который указан в настройках вашего приложения, URL холста формы https://apps.facebook.com/YOUR_APP_NAMESPACE … *
Я динамически строю ссылки oauth, чтобы спросить у пользователя дополнительные разрешения, если это необходимо, и я понял, что даже если вы перенаправляете на https://apps.facebook.com/YOUR_APP_NAMESPACE, у вас должны быть настройки домена приложения и веб-сайта, установленные в вашем администрирование приложений. Я установил домен на facebook.com и веб-сайт для корневого URL-адреса facebook.
Теперь моя ссылка на oauth работает нормально – даже в режиме песочницы.
У меня была эта точная проблема в приложении с вкладкой страницы, и для меня жизнь не могла решить, в чем проблема. Он работал на моей тестовой странице, но как только я сделал это вживую, это не сработало. В конце концов я обнаружил, что исправил проблему, поставив фактический URL-адрес на вкладку «Страница» (например, http://www.facebook.com/<"page_name">/app_<"app_id">
) в "URL-адрес сайта" в разделе "Веб-сайт". Это не имеет никакого смысла. Но это сработало 🙂
Решение для меня – включить параметр «Проверенные рефералы» для включения. После этого он был исправлен.
Проблема была решена после того, как я обновил «appID» и «secret», а затем перевел изменения обратно на герою (т.е. – «git push heroku master»)
Ключом является не забыть, чтобы вернуть изменения герою. Очень легко упускать из виду, если вы используете для тестирования на localhost.
Надеюсь это поможет.
Для меня проблема заключалась в том, что пользователи Facebook, которых я использовал для тестирования приложения, не получили своего адреса электронной почты, подтвержденного Facebook.
Мой клиент создал 2 фальшивых аккаунта на Facebook и сказал мне, что они не работают. Но он забыл подтвердить адреса электронной почты этих учетных записей (электронные письма, отправленные Facebook, попали в его папку со спамом, и он не заметил).
Мне потребовалось несколько часов, чтобы найти это, поэтому я надеюсь, что это поможет кому-то.
Ура!
Также возникла проблема с неправильной ссылкой перенаправления: у меня была ссылка, начинающаяся с «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 …»
Другая возможная ошибка, если вы скопировали код из примера SDK Facebook, вы можете получить ту же ошибку, несмотря на то, что все правильно. http://developers.facebook.com/docs/reference/php/
Это связано с тем, что в их примере они использовали backquotes вместо одиночных кавычек для ключа массива. Правильный код выглядит следующим образом.
require_once("facebook.php"); $config = array(); $config['appId'] = 'YOUR_APP_ID'; $config['secret'] = 'YOUR_APP_SECRET'; $config['fileUpload'] = false; // optional $facebook = new Facebook($config);
Если ваш код работает правильно, то для удаления такого типа ошибок перейдите в приложение для разработчиков Facebook и отключите режим песочницы .
Я сам столкнулся с этой проблемой. Я разрабатываю приложение внутренне, поэтому мой хост является «localhost». Было не очевидно, как установить «localhost» в конфигурации приложения. Если вы хотите создать локально, настройте приложение, выполнив следующие действия:
Сохраните и подождите пару минут для распространения информации, хотя это сработало сразу для меня.
Я установил ограничение на приложение, чтобы использовать приложение только для проживания в Соединенных Штатах. Я работал в Канаде в то время, когда появилось это сообщение об ошибке. После устранения ограничения все сработало.
Здесь возникла аналогичная проблема, и, да, моя Sandbox была включена. Я отключил его, и, voila, проблема входа в систему исчезла. Я должен предупредить, что эта проблема не затрагивает разработчиков и администраторов веб-сайтов, поскольку Facebook позволяет этим пользователям видеть приложение. По этой причине я даже не мог поверить, что пользователи жаловались на то, что не смогли войти в систему, так как мне не удалось войти в систему без каких-либо проблем.
У меня была такая же проблема, и исправить ее, добавив param & display = touch для URL
попробуйте, это может помочь
Ответ на 2015 год
Режим «Песочница» исчез.
Перейдите в « My Apps -> Your App -> Status & Review
и измените ползунок на «Да» для:
Вы хотите сделать это приложение и все его живые функции доступными для широкой публики?
Если вы разработчик приложения, вы можете увидеть более конкретное сообщение об ошибке, но, как правило, это сообщение означает одну из двух вещей:
У меня была эта ошибка, потому что я использовал 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 doc говорится, что вместо этого используется 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
Я попробовал все ответы, упомянутые здесь. Но это не сработало. Мне пришлось удалить и создать снова. Я предполагаю, что это было связано с новым «Аутентифицированным рефералом». Если вы добавили объекты Open Graph, которые не были одобрены, это может привести к ошибке.
У меня была та же проблема, и причина была другая:
Я был зарегистрирован как тестовый пользователь другого приложения. Поэтому я не смог разрешить приложение, которое не было тем, для которого был создан тестовый пользователь.
Когда я вышел из системы и вошел в систему как обычный пользователь или тестовый пользователь для приложения, которое я пытался разрешить, все было в порядке.
В моем случае возникла проблема с учетной записью, используемой с приложением.
Если приложение FB имеет алкогольный контент, пользователи FB, которые моложе, чем около 21, будут вызывать ошибку при попытке авторизации с ним.
Вам нужно указать http://
в вашем REDIRECT URI.
Для меня проблема заключалась в том, что URL-адрес приложения не полностью соответствовал URL-адресу, на котором я запускал его (т.е. разные каталоги, один и тот же домен)
Нет возможности разрешить этот тип ошибок. Так что лучше использовать свой собственный диалог так же, как показано в facebook и отправить сообщение снова и снова без входа. Несмотря на то, что вы удаляете свое приложение из facebook, вы можете запросить логин и отправить сообщение успешно.
Причина в моем случае была совершенно иной. Я попытался открыть диалог Feed автоматически после загрузки страницы. И 9 раз из 10 отобразилась эта ошибка. Во-первых, я добавил параметр show_error: true
предложенный @Peter Roome, но это не помогло, отображая 104: Invalid signature
, а не описательная.
Затем я понял причину. Код находился в функции $(document).ready
jQuery. И кажется, что некоторые вещи в facebook еще не были загружены в тот момент, когда код должен был быть выполнен. Я переместил код в блок $(window).load
(который выполняется после загрузки всего содержимого страницы), и проблема была решена.