【问题标题】:Facebook I like button not working all the timeFacebook 我喜欢按钮一直不起作用
【发布时间】:2011-02-11 15:06:29
【问题描述】:

我已经使用下面的代码实现了like - 按钮:

标题

<!-- Facebook Metatags -->
<meta property="og:image" content="http://mysite/logo.gif"/>
<meta property="og:locality" content="mycity"/>
<meta property="og:country-name" content="Germany"/>
<meta property="og:latitude" content="52.xxxxxxx"/>
<meta property="og:longitude" content="9.xxxxxxx"/>
<meta property="og:type" content="product"/>
<meta property="og:site_name" content="mypage.com"/>
<meta property="og:url" content="http://mypage.de/myproduct/myproductkey"/>
<meta property="og:title" content="Myproduct Description"/>

mypage.de/myproduct/myproductkey 上的正文

<div id="facebook-likebox">
<script src="http://connect.facebook.net/de_DE/all.js#xfbml=1"></script>
<fb:like href="http://mypage.de/myproduct/myproductkey" width="450" height="90" show_faces="false"></fb:like>
</div>

结果不一致:大部分时间都可以,但有时我会得到这个错误:

您未能提供有效的列表 管理员。您需要提供 管理员使用任一 \"fb:app_id\" 元标记,或使用 \"fb:admins\" 元标记来指定一个 逗号分隔的 Facebook 列表 用户。

这个错误没有意义,因为当我稍后调用该页面或其他人调用该页面时,它会再次工作。知道这里出了什么问题。

编辑

我用这些元标记更新了网站

<meta property="fb:admins" content="xxx"/>
<meta property="fb:app_id" content="xxx"/>

我重新检查了https://graph.facebook.com/xxx上的ID

但有时我仍然会出错。新的错误是:

指定的应用 ID“xxx” 在“fb:app_id”元标记中是 无效。

但大多数时候一切都正常。有人知道如何解决这个问题吗?

编辑 1

我们的网站使用负载平衡器并有很多外部脚本(E-Tracker 和其他跟踪解决方案)

编辑 2

我们使用 LINT https://developers.facebook.com/tools/lint/ 来检查页面

它有时会给出错误(无效的 app_id),有时会返回有效。但元标记中的 app-id 总是被正确解析,并且是有效的 app-id。

【问题讨论】:

  • Facebook 最近更改了他们的按钮。在我看来,Share 现在比 Like 效果更好。您的 og:type 对共享时的外观影响更大,当然对于现在社交媒体中的图像来说越大越好。

标签: facebook facebook-like


【解决方案1】:

Facebook Like 插件在使用开放图元标记时需要六个属性:

  • og:title - 实体的标题。
  • og:type - 实体的类型。您必须从 Open Graph 类型列表中选择一种类型。
  • og:image - 代表实体的图像的 URL。图像必须至少为 50 像素 x 50 像素。方形图片效果最好,但您可以使用宽度不超过其高度三倍的图片。
  • og:url - 代表实体的页面的规范、永久 URL。当您使用 Open Graph 标记时,Like 按钮会发布指向 og:url 的链接,而不是 Like 按钮代码中的 URL。
  • og:site_name - 您网站的可读名称,例如“IMDb”。
  • fb:adminsfb:app_id - 页面管理员的 Facebook ID 或 Facebook 平台应用程序 ID 的逗号分隔列表。至少,只包含您自己的 Facebook ID。

所以只需添加您的 Facebook ID:

<meta property="fb:admins" content="your_FB_ID"/>

【讨论】:

  • 我遇到了类似的问题,添加所有这些标签就解决了。我认为是 fb:app_id 成功了。
  • 没有 og:admins 标签之类的东西。这是 fb:admins
  • @Jason,当然是fb:admins!感谢您发现这个错字!
【解决方案2】:

我在这个该死的 Like 按钮上花了好几个小时,但它终于对我有用了!我添加了 admin_id 和 app_id 属性,但它仍然标记相同的错误。

这是一个检查清单,可确保您拥有所需的东西。

1) 您的文档类型可能有误。我不记得我是从哪里得到这些信息的,但请改用它:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">

2) 您需要导入 XML 命名空间。将您的 HTML 标记更改为如下所示:

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:og="http://ogp.me/ns#"
      xmlns:fb="http://www.facebook.com/2008/fbml">

我在我的网站上使用了 HTML5 脚本。所以这里有一个复制面供您参考。

<?php $current_url = "http://".$_SERVER["HTTP_HOST"].$_SERVER["REQUEST_URI"]; ?>
<div id="fb-root"></div>
<script>(function(d, s, id) {
        var js, fjs = d.getElementsByTagName(s)[0];
        if (d.getElementById(id)) {return;}
        js = d.createElement(s); js.id = id;
        js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1&appId=YOUR_APP_ID";
        fjs.parentNode.insertBefore(js, fjs);
      }(document, 'script', 'facebook-jssdk'));
</script>
<div class="fb-like" data-href="<?php echo $current_url; ?>" data-send="false" data-layout="button_count" data-width="80" data-show-faces="false"></div>

另外,传播需要几分钟。我等了 15 分钟,突然……它起作用了。

【讨论】:

    【解决方案3】:

    事实证明,行为不一致的原因是负载均衡器。我们停用了负载平衡,LINT 始终显示一致的结果。

    我不知道负载平衡发生了什么变化。元标记是相似的。

    我使用了 admins- 元标记。我不必使用 app-id 标签。规范中是这样写的。

    【讨论】:

    • 您是否找到了不需要关闭 LoadBalancing 的解决方案?我遇到了类似的问题,显然不能仅仅因为 Facebook 就关闭 LoadBalancing。
    【解决方案4】:

    我找到了解决办法!

    问题出在 URL 地址中, 它必须是:

    <meta property="og:url" content="http://www.yoursite.com/index.php" />
    

    我用过这个,效果很好

    【讨论】:

    • 这个问题已经在八个月前得到了准确的回答(有一个不同的、更彻底、更正确的答案)......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多