我实施的Facebook Connect(只是一个简单的登录按钮, fb:login-button )在Firefox和IE上运行完美。
但Safari / Chrome(Webkit)中没有显示相同的按钮。
这是具有讽刺意味的。在我的调试工作中,我将页面(包含 fb:login-button )保存为静态页面,然后将其加载到Safari中。按钮出现,一切正常!
我的PHP呈现的完全相同的页面(使用完全相同的HTML源代码)无法启动按钮。
我在努力支持Webkit,但我已经接近放弃了。有人可以帮忙吗?
答案 0 :(得分:4)
我发现了另一种可能发生的方式(责怪 - 我自己为愚蠢的方式);它可能并不常见,但是在这种情况下可以节省其他任何麻烦,这就是:
此症状也可能由阻止Facebook资源的各种安全工具引起。
就我而言,我之前在Chrome中安装了Facebook Disconnect作为插件,并且忘记了所有关于它的安装。我还有第二次安装的Chrome看似相同(但没有Facebook Disconnect)。第一个是正确加载fb:login-button,另一个不会;在我查看插件之前花了我很多年,因为Facebook Disconnect没有图标,所以我很容易错过它的存在。
如果某种安全插件阻止加载Facebook资源,您会看到以下内容。只需使用开发人员工具查看在浏览器中呈现的html即可。
在正常的Chrome会话中,你最终会得到类似的结果:
<fb:login-button><a class="fb_button fb_button_medium"><span class="fb_button_text">Your text here</span></a></fb:login-button>
但是在禁用facebook资源的版本中你最终会得到这个:
<fb:login-button>Your text here</fb:login-button>
就像我说的那样,回想起来非常明显。
答案 1 :(得分:3)
有同样的问题,但它与插件或格式不正确的内容无关。看起来如果你在你的Facebook页面上启用国家过滤它有类似按钮的问题,这应该是相当明显的。 Facebook从您的个人资料中获取您的位置,而不是您的IP地址。
如果您打算使用社交插件,请务必禁用国家/地区锁定。
答案 2 :(得分:1)
这可能是因为安装了ClickToFlash。要么禁用它,要么在ClickToFlash设置中选中“自动加载不可见的Flash视图”。
答案 3 :(得分:1)
我们发现,如果您的网页带有XHTML响应标头,那么使用 innerHTML JS功能的Safari(可能是某些旧版Chrome或其他WebKIT浏览器)的Facebook代码存在问题(的应用/ XHTML + xml的强>)。 使用 text / html 解决了这个问题。
对于我们使用的JSF2,实现修复就像包装FB按钮一样简单:
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:fb="http://www.facebook.com/2008/fbml"
xmlns:f="http://java.sun.com/jsf/core">
...
<f:view contentType="text/html">
<fb:login-button>Login using Facebook</fb:login-button>
</f:view>
Facebook错误报告:
http://bugs.developers.facebook.net/show_bug.cgi?id=5545
答案 4 :(得分:1)
我有这个问题,Facebook按钮根本没有显示,我花了很长时间才弄清楚它是什么。幸运的是,经过几天的拔毛,我现在将与大家分享答案。在我的情况下,我根本没有启用xfbml。在我的FB.init中我将它设置为false:
FB.init({
appId : 'app_id', // App ID
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : false, // parse XFBML
oauth : true // enable OAuth 2.0
});
我将其更改为“ true ”(xfbml),登录按钮现在效果很好! :P祝你好运!
答案 5 :(得分:0)
当我在config / facebooker.yml中的callback_url中出现错误的域时,就会发生这种情况。显然它使用它来加载js文件。
答案 6 :(得分:0)
我遇到了同样的问题但我通过确保我的应用设置中的网址与我网站的网址完全相同来解决了这个问题(例如,当我访问没有网站的网站时,它无效。)< / p>
答案 7 :(得分:0)
我在这里尝试了所有建议的解决方案,但它对我不起作用。但现在我终于找到了解决方案。
Facebook现在需要Canvas(Secure Canvas URL)的安全(https)。无担保的将很快被弃用。
以下是主要区别,Chrome不喜欢使用无效认证的https连接。在本地主机上,很可能安装了stunnel以允许localhost的https连接。 Firefox可以使用自己创建的SSL证书,并允许您在尝试访问该站点时添加例外。 Chrome不允许开箱即用。
当我在Chrome中加载我的应用时,该页面是空白的,我没有看到任何登录按钮。
点击F12,然后点击Chrome中的Netwrok标签:
您会看到取消对localhost的发布请求。 DOUBLE点击它。
现在您会看到chrome因为证书而阻止了localhost:
无论如何,
点击继续。
现在返回其他标签页并重新加载页面:
Chrome现在可以像Firefox一样工作并显示登录按钮。