如何解决Facebook Graph API和Docker
我正在使用Laravel在本地Docker容器中的网站上工作。使用的网络服务器是Nginx。
我正在尝试实现Facebook的Graph API(PHP API),并且由于我是在localhost上开发并使用Docker的,所以我每次使用API时都会得到:
无法加载网址:此网址的域未包含在应用的 域。为了能够加载此URL,请添加所有域和子域 进入应用程序设置中的“应用程序域”字段。
我尝试添加我在本地myapp.local:3000
,<my ip>:3000
或localhost: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服务器请求令牌,并且在创建令牌后,最终将您重定向到原始目的地。重定向位置不能为“ localhost”,它应为有效位置,例如网站。如果您想在本地进行此操作,则可以编辑/etc/hosts
文件以将local.example.com
映射到127.0.0.1
并将该域用于测试/质量检查中的重定向,这样当您的应用重定向时,它会通过localhost尝试尝试。
另一个建议(通过搜索错误的确切但更通用的部分“无法加载URL:此URL的域不包含在应用程序的域中”发现)建议:
,在https://developers.facebook.com/apps/your-app-id/fb-login/settings/下的有效OAuth重定向URI中添加“ https://apps.facebook.com/”
终于有了解决方案(不是我想要的一种)。我正在使用在主机文件上定义的自定义域。这对于Facebook无效。我需要在Facebook Developers上使用localhost(甚至不是127.0.0.1)并将localhost列入白名单。
因此,如果遇到此问题,则可以执行此解决方法,并使用localhost而不是自定义域。不过,我理想的解决方案是使用自定义域。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。