Facebook 图 API 和 Docker

Facebook Graph API and Docker

我正在使用本地 Docker 容器中的 Laravel 开发网站。使用的网络服务器是Nginx。

我正在尝试实现 Facebook 的 Graph API(PHP API)并且我在本地主机上开发并使用 Docker,任何时候我想使用API 我得到:

Can't Load URL: The domain of this URL isn't included in the app's domains. To be able to load this URL, add all domains and subdomains of your app to the App Domains field in your app settings.

我尝试添加我在本地使用的域 myapp.local:3000,还有 <my ip>:3000localhost:3000,但没有任何效果。

代码如下:

public function facebookRequest() {
    $fb = new \Facebook\Facebook([
        '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 进行开发,我需要做什么?有一些绕过域过滤器的选项或者我应该怎么做?

似乎您正在使用您的应用程序从 Facebook 服务器请求令牌,并且在创建令牌后,您最终将被重定向到原始目的地。重定向位置不能是“本地主机”,它应该是一个有效的位置……就像一个网站。如果您想在本地进行此操作,您可以编辑 /etc/hosts 文件以将 local.example.com 映射到 127.0.0.1 并使用此域在 tests/QA 中进行重定向,这样当您的应用程序获得重定向,它通过本地主机尝试。

另一个建议(通过搜索错误“无法加载 URL:此 URL 的域未包含在应用程序的域中”的确切但更通用的部分找到) ) 建议:

add "https://apps.facebook.com/" in valid OAuth redirect URIs under https://developers.facebook.com/apps/your-app-id/fb-login/settings/

好吧终于找到了解决方案(不是我想要的那个)。我使用的是在我的主机文件中定义的自定义域。这对 Facebook 不起作用。我需要在 Facebook Developers 上使用本地主机(甚至不是 127.0.0.1)和白名单本地主机。

因此,如果您遇到此问题,可以执行此解决方法并使用 localhost 而不是自定义域。不过,我理想的解决方案是使用自定义域。