Ошибка 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 76

10 ответов:

обновление:
Чтобы ответить на код ошибки API: 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/

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

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

Я скачал последнюю Facebook PHP-SDK и бросил его в моем .

но я получил ту же ошибку, что и ваш! Я заметил, что 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

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

app domains is in the basic settings of your app

Это просто из-за ошибки 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).

  1. Я удалил url, который я дал в = = = > приложение на Facebook (URL-Адреса Холст)
  2. Я дал 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

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

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

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

работает локально... Я не мог заставить API feeds работать, но api share работал почти сразу без проблем.

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

изменение с

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

до

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

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