Ошибка API Facebook 191 - PullRequest
       17

Ошибка API Facebook 191

76 голосов
/ 14 января 2011

Я пытаюсь интегрировать свой проект с 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 ]

88 голосов
/ 14 января 2011

UPDATE:
Чтобы ответить API Error Code: 191
redirect_uri должно быть равно (или относительно) URL сайта.
enter image description here

Подсказка: Используйте базовые 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/

Хотя я был уверен, что вы не можете сделать это, основываясь на моем собственном опыте (хотя очень старый тест), кажется, что вы на самом деле CAN тест ваше приложение Facebook локально!

Итак, я взял свое старое приложение и отредактировал его имя, URL сайта и URL холста: URL сайта: http://localhost:80/fblocal/

Я скачал последнюю версию Facebook PHP-SDK и бросил ее в папку xampp/htdocs/fblocal/.

Но я получил ту же ошибку, что и ты! Я заметил, что XAMPP выполняет автоматическое перенаправление на http://localhost/fblocal/, поэтому я изменил настройку на просто http://localhost/fblocal/, и ошибка исчезла НО Мне пришлось удалить приложение (из настройки конфиденциальности ) и переустановите мое приложение, и вот результаты:
alt text

После этого попросил разрешения 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;
    }
}

Результаты: alt text

11 голосов
/ 23 мая 2013

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

app domains is in the basic settings of your app

8 голосов
/ 30 апреля 2012

Это просто из-за ошибки URL.

Независимо от того, какой URL-адрес сайта указан, он должен быть правильным.

Я упомянул URL-адрес веб-сайта как http://localhost:3000/ и домен как localhost, но в моем браузереЯ запускал http://0.0.0.0:3000/.

Когда я запустил сервер как localhost:3000, это решило проблему.

Как я уже говорил, URL сайта как localhost Facebook будет перенаправлен на тот же самый, если мы0.0.0.0:3000, возникнет ошибка: «Данный URL не разрешен конфигурацией приложения».

2 голосов
/ 10 сентября 2012

Я также столкнулся с той же проблемой, когда использую метод аутентификации Facebook.Но я исправил эту проблему со следующими изменениями в API Facebook (Apps >> My App >> Basic).

  1. Я удалил URL, который я дал в приложении ===> на Facebook (CanvasURL)
  2. Я дал URL-адрес сайта только в ===> Веб-сайт с Facebook Login option

Затем я дал этот AppId и App Secret на своей веб-странице.

Итак, нажав на кнопку входа в систему, он запрашивает разрешения на доступ, а затем перенаправляет его на URL-адрес ( Веб-сайт с логином Facebook ).

0 голосов
/ 11 июня 2018

Я исправил это, передав URL перенаправления на FacebookRedirectLoginHelper::getAccessToken() в моей функции обратного вызова:

Меняется с

try {
        $accessToken = $helper->getAccessToken();
}
...

до

try {
        $accessToken = $helper->getAccessToken($fbRedirectUrl);
}
...

Я работаю над бродячей коробкой, и, похоже, у FacebookRedirectLoginHelper::getCurrentUrl() возникли проблемы с генерацией действительного URL.

0 голосов
/ 08 сентября 2015

Работая локально ... Я не мог заставить работать API-интерфейс каналов, но API-интерфейс общего доступа работал практически без проблем.

0 голосов
/ 05 декабря 2013

Что-то, что я хотел бы добавить, так как это ошибка 191 первый вопрос в Google:

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

0 голосов
/ 28 июня 2013

на странице приложения Facebook перейдите на вкладку "Основные". найти опцию «Веб-сайт с авторизацией на Facebook».

вы найдете URL сайта: введите туда полный URL (например, http://Mywebsite.com/MyLogin.aspx). это URL, который вы можете использовать с вызовом, например, если идентификатор приложения 123456789

https://graph.facebook.com/oauth/authorize?client_id=123456789&redirect_uri=http://Mywebsite/MyLogin.aspx&scope=publish_actions

0 голосов
/ 05 декабря 2012

Я также заметил, что даже если вы укажете свой веб-сайт в разделе secion - сайт с входом в Facebook -> URL сайта, например, например. http://example.com, но если ваш раздел Домены приложений пуст и вы открываете веб-сайт с именем www.example.com, вы также получите эту ошибку. Чтобы избежать этого, в разделе «Домены приложений» напишите example.com, который разрешит субдомены, такие как www.example.com, что-то.example.com и т. Д.

0 голосов
/ 21 ноября 2012

Была такая же проблема:

$params = array('redirect_uri' => 'facebook.com/pages/foobar-dev');
$facebook->getLoginUrl($params);

Когда я изменил redirect_uri со страницы разработчика на живую страницу, возникла ошибка 191.

Итак, я удалил $ params:

$facebook->getLoginUrl();

После запроса приложения FB перенаправляет на сам URL приложения, например: my.domain.com

Теперь я проверяю index.php моего приложения, находится ли я внутри FB iframe или нет. Если нет, я перенаправляю на страницу FB в реальном времени, например:

$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();
}
...