it-swarm.com.ru

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

76
musoNic80

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

88
ifaour

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

app domains is in the basic settings of your app

11
Mike_K

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

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

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

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

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

8
devudilip

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

  1. Я удалил URL, который я дал в ===> Приложение на Facebook (Canvas URLs)
  2. Я дал URL сайта только в ===> Сайт с Facebook Войти опция

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

Таким образом, нажав на кнопку входа в систему, он запрашивает права доступа, а затем перенаправляет его, чтобы дать URL ( Сайт с Facebook Логин ).

2
ShivarajRH

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

0
chim

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

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

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

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

0
Barnaba

на странице приложения 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
Partha

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

0
dav

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

Изменение от 

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

в

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

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

0
Kyrre