使用Facebook JavaScript SDK实现分享对话框遇域名报错求助
解决Facebook分享对话框“域名未包含在应用域名中”的报错问题
嘿,我碰到好几个开发者都栽在这个问题上——明明Facebook登录跑的好好的,一调用分享对话框就弹出域名不对的报错。其实核心原因很简单:分享对话框的域名配置和Facebook登录的OAuth配置是完全分开的,你光在OAuth那栏加域名没用!
你需要去Facebook开发者后台补两个关键配置:
第一步:配置分享功能的专属域名
进入你的应用后台,找到「产品 > Facebook分享」板块(如果还没添加这个产品,先添加它),然后在「分享域名」(Share Domains)的输入框里,把你的主域名、子域名都加进去,格式就用https://yourdomain.com或者https://sub.yourdomain.com,别加具体路径哦。第二步:检查应用基础设置里的网站域名
切换到「应用设置 > 基本」页面,找到「网站域名」(Site Domain)项,把你的主域名填进去。这个配置是Facebook用来校验所有前端相关功能的基础域名,分享功能也会依赖它。
另外还有几个小细节要注意:
- 线上环境必须用HTTPS,Facebook现在不支持HTTP域名的分享功能;本地测试的话,
localhost或者localhost:端口号是可以直接用的,不用额外配置(前提是应用处于开发模式)。 - 你调用
FB.ui时传入的href参数里的域名,必须和你配置的分享域名完全匹配,比如你配置的是https://blog.yourdomain.com,那分享的链接就不能是https://yourdomain.com/post,得对应上。
举个正确的分享调用示例:
FB.ui({ method: 'share', href: 'https://blog.yourdomain.com/my-awesome-post', }, function(response) { if (response && !response.error_message) { console.log('分享成功!'); } else { console.log('分享失败或用户取消'); } });
配置完这两项,刷新页面再试,应该就能正常弹出分享对话框啦。
内容的提问来源于stack exchange,提问作者David Dal Busco
相关产品推荐
相关产品推荐

