Facebook我喜欢按钮不能一直工作

时间:2011-02-11 15:06:30

标签: facebook facebook-like

我使用了以下代码来实现like - button:

标题

<!-- 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>

结果不一致:大部分时间都有效,但有时我会收到此错误:

  

您未能提供有效的列表   administators。你需要提供   管理员使用a   \“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。

4 个答案:

答案 0 :(得分:4)

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

  • og:title - 实体的标题。
  • og:type - 实体的类型。您必须从Open Graph类型列表中选择一种类型。
  • og:image - 表示实体的图像的URL。图像必须至少为50像素×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"/>

答案 1 :(得分:4)

我在这个爆破的Like按钮上花了好几个小时,但它终于为我工作了!我添加了admin_id和app_id属性,它仍然标记了相同的错误。

这是一个检查清单,以确保您拥有所需的一切。

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

<!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分钟突然......它奏效了。

答案 2 :(得分:3)

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

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

我使用了admins-metatag。我没有必要使用app-id标签。这就是它在规范中的写法。

答案 3 :(得分:-2)

我找到了解决方案!

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

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

我使用了它并且它可以工作