Facebook Graph API и Docker

#docker #facebook-graph-api

#docker #facebook-graph-api

Вопрос:

Я работаю над веб-сайтом, использующим Laravel в контейнере Docker на локальном. Используемый веб-сервер — Nginx.

Я пытаюсь реализовать Graph API Facebook (PHP API) и, поскольку я разрабатываю на localhost и использую Docker, каждый раз, когда я хочу использовать API, я получаю:

Не удается загрузить URL-адрес: домен этого URL-адреса не включен в домены приложения. Чтобы иметь возможность загружать этот URL-адрес, добавьте все домены и поддомены вашего приложения в поле Домены приложений в настройках приложения.

Я попытался добавить домен, который я использую локально myapp.local:3000 , также <my ip>:3000 или localhost:3000 , но ничего не работает.

Вот код:

 public function facebookRequest() {
    $fb = new FacebookFacebook([
        'app_id' => 'MY_APP_ID',
        'app_secret' => 'MY_APP_SECRET',
        'default_graph_version' => 'v8.0',
        ]);

    $callback = 'users/get-facebook-photos';
    $helper = $fb->getRedirectLoginHelper();
    $permissions = ['user_photos'];
    $data['fb_url'] = $helper->getLoginUrl($callback, $permissions);
    
    $loginUrl = $helper->getLoginUrl(base_url().'/users/get-facebook-photos', $permissions);

    echo '<a href="' . $loginUrl . '">Log in with Facebook!</a>';
}
  

Что мне нужно сделать для разработки с использованием Graph API и Docker? Есть какая-то возможность обойти фильтр домена или что мне делать?

Комментарии:

1. вы пытались добавить localhost без порта в качестве домена?

2. @luschnn да, я сделал, но не сработал

Ответ №1:

Похоже, вы используете свое приложение для запроса токена с серверов Facebook, и когда токен будет создан, вы в конечном итоге будете перенаправлены в исходное место назначения. Местоположение перенаправления не может быть «localhost», это должно быть допустимое местоположение… как веб-сайт. Если вы хотите, чтобы это работало локально, вы можете отредактировать свой /etc/hosts файл для сопоставления local.example.com с 127.0.0.1 этим доменом и использовать его для перенаправлений в tests / QA, чтобы при перенаправлении вашего приложения оно пыталось выполнить его через localhost.

Другое предложение (найденное путем поиска точных, но более общих частей ошибки «Не удается загрузить URL: домен этого URL-адреса не включен в домены приложения») предлагает:

добавить «https://apps.facebook.com /» в допустимых URI перенаправления OAuth в https://developers.facebook.com/apps/your-app-id/fb-login/settings /

Ответ №2:

Ну, наконец-то получил решение (не то, которое я хотел). Я использовал пользовательский домен, определенный в моем файле хоста. Это не сработало для Facebook. Мне нужно было использовать localhost (даже не 127.0.0.1) и внести localhost в белый список разработчиков Facebook.

Итак, если у вас есть эта проблема, вы можете сделать этот обходной путь и использовать localhost вместо пользовательского домена. Тем не менее, моим идеальным решением было бы использование пользовательских доменов.