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

На данный момент я не написал серверный код для работы с переадресацией и т.д. Все, что я сделал, это добавить SDK для JavaScript на основе учебника в Facebook для веб-сайтов.

Чем я ошибся? Это явно связано с настройками моего приложения Facebook, но я не вижу, что!

Ответ 1

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

Совет. Используйте базовые URL-адреса вместо полных URL-адресов, указывающих на определенные страницы.

НЕ РЕКОМЕНДУЕТСЯ: Например, если вы используете www.mydomain.com/fb/test.html в качестве URL-адреса вашего сайта и <<22 > как redirect_uri, это даст вам ошибку 191.

РЕКОМЕНДОВАНО:. Вместо этого ваш URL-адрес сайта будет установлен на базовый URL-адрес, например: www.mydomain.com/ ИЛИ www.mydomain.com/fb/.


Сегодня я просмотрел приложение http://localhost:8080/

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

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

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

Но у меня такая же ошибка, как у вас! Я заметил, что XAMPP выполняет автоматическое перенаправление на http://localhost/fblocal/, поэтому я изменил параметр на просто http://localhost/fblocal/, и ошибка исчезла BUT Мне пришлось удалить приложение (из параметры конфиденциальности) и переустановить мое приложение, и вот результаты: < ш > 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

Ответ 2

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

app domains is in the basic settings of your app

Ответ 3

Это происходит только из-за ошибки URL.

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

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

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

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

Ответ 4

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

  • Я удалил URL-адрес, который я дал в === > Приложение в Facebook (URL холста)
  • Я дал URL-адрес сайта только в === > Веб-сайт с функцией входа в Facebook

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

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

Ответ 5

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

$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

Теперь я проверяю index.php моего приложения, если я внутри FB iframe или нет. Если нет, я перенаправляюсь на текущую страницу 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();
}

Ответ 6

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

Ответ 7

на странице приложения facebook, перейдите к основной вкладке. найдите опцию "Веб-сайт с Facebook".

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

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

Ответ 8

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

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

Ответ 9

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

Ответ 10

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

Переход от

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

в

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

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