本地环境下使用Facebook PHP SDK实现登录及发帖功能时遭遇域名未纳入应用域错误的求助
解决本地localhost环境下Facebook登录/发布的域名错误问题
嘿,我明白你作为开发新手遇到这个问题的困扰——本地环境没法把localhost加到Facebook应用域名里确实头疼,不过有两个靠谱的办法能解决这个问题:
方法一:在Facebook开发者后台直接配置localhost(开发模式下可用)
Facebook其实允许在开发模式的应用中添加localhost作为合法域名,步骤如下:
- 打开你的Facebook应用开发者后台,进入「设置」→「基本」页面
- 在「应用域名」输入框中添加
localhost - 切换到「产品」→「Facebook登录」→「设置」页面
- 在「有效的OAuth跳转URI」中添加你的本地回调URL:
http://localhost:8077/fbPost/ - 确认你的应用处于开发模式(页面顶部的状态栏会显示,开发模式下只有应用的开发者能测试,不会对外公开)
做完这些,localhost的回调应该就能正常工作了。
方法二:用ngrok将本地服务映射为公网域名(更灵活的测试方式)
如果第一种方法不生效,或者你需要模拟真实线上环境测试,可以用ngrok把本地端口暴露成公网HTTPS域名:
- 下载ngrok(无需安装,解压后直接使用)
- 在命令行中运行以下命令,把本地8077端口映射到公网:
ngrok http 8077 - 运行后你会得到一个类似
https://abc123.ngrok.io的公网域名 - 更新你的
fbConfig.php中的回调URL:$redirectURL = 'https://abc123.ngrok.io/fbPost/'; // 替换成你的ngrok域名 - 回到Facebook应用后台,把这个ngrok域名添加到「应用域名」和「有效的OAuth跳转URI」中
- 现在访问
https://abc123.ngrok.io/fbPost/就能正常触发Facebook登录流程了
额外注意事项
- 你的代码中使用的
publish_actions权限在新版本的Graph API中已经被弃用,如果是新创建的应用,需要申请publish_pages(发布到页面)或使用针对个人账号的权限,不过在开发模式下,作为应用开发者你应该能临时使用相关权限进行测试 - 确保你的session正常启动,代码中
session_start()的位置没有问题,否则access token无法正确存储
内容的提问来源于stack exchange,提问作者Ander Canales Medina
相关产品推荐
相关产品推荐

