Ошибка API Facebook 191
Я пытаюсь интегрировать свой проект с Facebook. Сначала я делаю детские шаги и просто пытаюсь войти в систему, получить сеанс Facebook и получить некоторые пользовательские данные. Я разрабатываю его локально, поэтому мои настройки приложения Facebook:
site URL: http://127.0.0.1:8888/mySite/
URL-адрес такой же, как и выше. Я не указал домен сайта.
однако, когда я нажимаю на кнопку входа в систему, я получаю сообщение об ошибке:
API Error Code: 191
API Error Description: The specified URL is not owned by the application
Error Message: redirect_uri is not owned by the application.
на данный момент я не написал никакого кода на стороне сервера, чтобы иметь дело с редиректов и т. п. Все, что я сделал, это добавить JavaScript SDK на основе учебника в Facebook для веб-сайтов.
что я сделал не так? Очевидно, что-то связано с моими настройками приложения Facebook, но я не вижу, что!
10 ответов:
обновление:
Чтобы ответить на код ошибки API: 191
Элементredirect_uri
должно быть равно (или относительно) URL сайта.Совет: использовать базовый URL-адреса, а не полный URL, указывающие на конкретные страницы.
НЕ РЕКОМЕНДУЕТСЯ: например, если вы используете
www.mydomain.com/fb/test.html
как URL вашего сайта и имеяwww.mydomain.com/fb/secondPage.html
какredirect_uri
это даст вам ошибку 191.рекомендуется: Поэтому вместо URL-адреса вашего сайта установите базовый URL-адрес, например:
www.mydomain.com/
илиwww.mydomain.com/fb/
.
Я прошел через Facebook пример приложения Python сегодня, и я был шоке он четко заявлял, что вы можете использовать
http://localhost:8080/
как URL сайта если вы разрабатываете локально:настройте URL-адрес сайта и укажите его на ваш веб-сервер. Если вы развивается локально, вы можете использовать http://localhost:8080/
, А Я был конечно, вы не можете этого сделать, основываясь на моем собственном опыте (очень старый тест, хотя) кажется, что вы на самом деле можете проверьте приложение Facebook локально!
поэтому я взял старое приложение и отредактировал его имя, URL-адрес сайта и URL-адрес холста: URL сайта:
http://localhost:80/fblocal/
Я скачал последнюю Facebook PHP-SDK и бросил его в моем .
но я получил ту же ошибку, что и ваш! Я заметил, что XAMPP делает автоматическое перенаправление на
http://localhost/fblocal/
поэтому я изменил настройку на простоhttp://localhost/fblocal/
и ошибка пропала но мне пришлось удалить приложение (с настройки конфиденциальности) и повторно установить приложение и вот результаты:после этого попросил
publish_stream
разрешение, и я смог опубликовать мой профиль (с помощью PHP-SDK):$user = $facebook->getUser(); if ($user) { try { $post = $facebook->api('/me/feed', 'post', array('message'=>'Hello World, from localhost!')); } catch (FacebookApiException $e) { error_log($e); $user = null; } }
результаты:
для меня это был отсутствующий домен приложения. Зайдите в приложение и убедитесь, что корень вашего сайта настроен как домен приложения. Смотрите скриншот.
Это просто из-за ошибки URL.
любой URL-адрес веб-сайта должен быть правильным.
Я упомянул URL сайта как
http://localhost:3000/
и домен как localhost, но в моем браузере я бежалhttp://0.0.0.0:3000/
.когда я запускал сервер как
localhost:3000
это решило проблему.как я уже упоминал, URL-адрес сайта как localhost Facebook будет перенаправляться на то же самое, если мы работаем
0.0.0.0:3000
, это вызовет ошибку, что " данный URL не допускается Конфигурация приложения."
Я также столкнулся с той же проблемой, когда я использую метод аутентификации facebook. Но я исправляю эту проблему со следующими изменениями в api Facebook (
Apps >> My App >> Basic
).
- Я удалил url, который я дал в = = = > приложение на Facebook (URL-Адреса Холст)
- Я дал url сайта только в = = = > сайт с логином Facebook опции
затем я дал этот AppId и секрет приложения на моей веб-странице.
нажать при нажатии кнопки входа в систему он запрашивает разрешения на доступ, а затем перенаправляет его на url-адрес (сайт с логином Facebook).
была та же проблема:
$params = array('redirect_uri' => 'facebook.com/pages/foobar-dev'); $facebook->getLoginUrl($params);
когда я изменил redirect_uri со страницы devloper на живую страницу, возникла ошибка 191.
поэтому я удалил $params:
$facebook->getLoginUrl();
после приложения-запрос теперь FB перенаправляет на сам url приложения f. e.: my.domain.com
то, что я делаю сейчас, это проверка индекса.php моего приложения, если я нахожусь внутри FB iframe или нет. Если нет, я перенаправляю на страницу live FB f. e.:
$app = 'facebook.com/pages/foobar-live'; $rd = (isset($_SERVER['HTTP_REFERER'])) ? parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST) : false; if ($rd == 'apps.facebook.com' || (!isset($_REQUEST['signed_request']))) { echo '<script>window.parent.location = "'.$app.'";</script>'; die(); }
Я также заметил, что даже если вы укажете свой сайт в разделе "секион-сайт с логином Facebook" - > url сайта, например http://example.com, но если ваш раздел Домены приложений пуст, и вы открываете сайт как www.example.com вы также получите эту ошибку. Чтобы избежать этого в разделе" Домены приложений " напишите example.com, что позволит поддомены, как www.example.com, something.example.com etc
на странице приложения facebook перейдите на вкладку basic. найдите опцию "сайт с логином Facebook".
вы найдете URL сайта: введите туда полный URL (например http://Mywebsite.com/MyLogin.aspx). это URL-адрес, который вы можете использовать с вызовом, например, если идентификатор приложения 123456789
Что-то я хотел бы добавить, так как это ошибка 191 первый вопрос на google:
при перенаправлении на facebook вместо вашего собственного сайта для подписанного запроса вы можете столкнуться с этой ошибкой, если пользователь имеет безопасный просмотр, и ваше приложение перенаправляет на facebook без SSL.
работает локально... Я не мог заставить API feeds работать, но api share работал почти сразу без проблем.
я исправил это, передав url-адрес перенаправления в
FacebookRedirectLoginHelper::getAccessToken()
в моей функции обратного вызова:изменение с
try { $accessToken = $helper->getAccessToken(); } ...
до
try { $accessToken = $helper->getAccessToken($fbRedirectUrl); } ...
Я развиваюсь на бродячей коробке, и кажется
FacebookRedirectLoginHelper::getCurrentUrl()
были проблемы с созданием допустимого url.