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