9

我的 Facebook Connect 实现(只是一个简单的登录按钮,fb:login-button)在 Firefox 和 IE 上完美运行。

但是 Safari/Chrome (Webkit) 中没有显示相同的按钮。

这是具有讽刺意味的。在我的调试工作中,我将页面(包含fb:login-button)保存为静态页面,然后将其加载到 Safari 中。按钮出现,一切正常!

我的 PHP 呈现的完全相同的页面(具有完全相同的 HTML 源)无法调出按钮。

我在这里努力支持 Webkit,但我快要放弃了。有人可以帮忙吗?

4

8 回答 8

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>

就像我说的,回想起来很明显。

于 2011-10-07T06:01:31.703 回答
3

有同样的问题,但它与插件或格式错误的内容无关。似乎如果您在 Facebook 页面上启用国家/地区过滤,则“赞”按钮会出现问题,这应该是相当明显的。Facebook 从您的个人资料中获取您的位置,而不是您的 IP 地址。

如果您打算使用社交插件,请确保禁用国家/地区锁定。

于 2012-11-15T14:31:16.733 回答
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 祝你好运!

于 2012-04-20T01:05:51.180 回答
1

这可能是由于安装了 ClickToFlash。要么禁用它,要么在 ClickToFlash 设置中选中“自动加载不可见的 Flash 视图”。

于 2010-02-01T22:36:33.837 回答
1

我们发现,如果您的页面带有 XHTML 响应标头 ( application/xhtml+xml ),则 Safari(可能还有一些旧版本的 Chrome 或其他 WebKIT 浏览器)使用innerHTML JS 函数的 Facebook 代码存在问题。使用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

于 2011-06-23T15:36:14.367 回答
0

当我在 config/facebooker.yml 中的 callback_url 中有错误的域时,就会发生这种情况。显然它使用它来加载 js 文件。

于 2010-02-27T02:51:49.380 回答
0

我遇到了同样的问题,但我通过确保我的应用程序设置中的 URL 与我的网站的 URL 完全相同来解决它(即,当我在没有 www. 的情况下访问我的网站时它不起作用)。

于 2010-12-05T06:15:49.007 回答
0

我在这里尝试了所有建议的解决方案,但对我不起作用。但现在我终于找到了解决方案。

Facebook 现在需要 Canvas 的安全 (https)(安全画布 URL)。无担保的将很快被弃用。

这是主要区别,Chrome 不喜欢带有无效认证的 https 连接。在本地主机上,您很可能安装了 stunnel 以允许本地主机的 https 连接。Firefox 可以使用自行创建的 SSL 证书,并允许您在尝试访问该站点时添加例外。Chrome 不允许它开箱即用。

在此处输入图像描述

当我在 Chrome 中加载我的应用程序时,页面是空白的,我没有看到任何登录按钮。

单击 F12 并单击 Chrome 中的 Netwrok 选项卡:

在此处输入图像描述

您会看到对 localhost 的发布请求已被取消。双击它。

现在您会看到 chrome 因为证书而阻止了 localhost:

在此处输入图像描述

无论如何点击继续。

现在回到您的其他选项卡并重新加载页面:

在此处输入图像描述

Chrome 现在像 Firefox 一样工作,并显示登录按钮。 在此处输入图像描述

于 2013-07-16T09:45:46.340 回答