无法获取Facebook评论计数

3
我在我的网站上使用Facebook评论,它工作正常,但我无法检索评论数量。
我尝试了HTML5代码:<div class="fb-comments-count" data-href="http://www.bmeme.hu/?site=post&amp;id=20">0</div>,但它返回的是0而不是实际数字。
我在这里检查了我的页面:https://graph.facebook.com/comments/?ids=http://www.bmeme.hu/?site=post&id=20,但是如您所见,它什么也没有返回。
为什么无法获取Facebook评论计数?
谢谢
更新:以下是我使用的代码: <div class="fb-comments-count" data-href="<? echo urlencode($siteurl."/?site=post&id=".$value["id"]); ?>" style="display: inline;">0</div> komment
$siteurl = http://www.bmeme.hu
$value["id"] //the actual post id

<body>标签的第一行:
<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_US/all.js#xfbml=1";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>

而且不起作用...

2个回答

2

这是我用来使评论计数工作的代码。(这是有效的HTML 5代码,对于旧模板,请使用Facebook网站上的示例)。

//Include this in the footer of your page.  
(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=xxxxxxxxxxxxxx";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));

现在使用这个 div 来获取评论计数(因为第一次使用它时,你的页面上可能没有任何评论,所以它将显示为 0)。
<div class="fb-comments-count" data-href="http://www.yourpagelinkhere.com"></div>

1

你正在错误地编码URL。

属性data-href应该是http://www.bmeme.hu/?site=post&id=20(注意&而不是&amp;)。就像在你的评论社交插件中定义的那样。

要通过OpenGraph获取评论,您应该使用encodeURIComponent正确编码整个URL:

https://graph.facebook.com/comments/?ids=http%3A%2F%2Fwww.bmeme.hu%2F%3Fsite%3Dpost%26id%3D20

comments-countiframe 版本可以通过 URL 访问:

http://www.facebook.com/plugins/comments.php?href=http%3A%2F%2Fwww.bmeme.hu%2F%3Fsite%3Dpost%26id%3D20&permalink=1

更新:
由于您还关心“有效”的HTML,因此应使用URL编码的URL来获取此项操作。我已经创建了一个jsFiddle片段,您可以在其中看到两种方法都在工作: http://jsfiddle.net/rFmyX/


如果我使用&而不是&,那么它将不是w3c有效的代码。但我尝试了,仍然没有任何效果...图表链接现在很好,但我只想要评论计数,并且只使用HTML5。 - Tamas Kinsztler
@TamásKinsztler,我已经更新了我的代码,并提供了实时工作示例。顺便说一句,在你的问题中最好声明你关心HTML的有效性(并非每个人都关心,也不会自动暗示)。 ;) - Juicy Scripter
我发现你的代码能够工作,但是我在我的网站上(正如你所看到的)实现了同样的代码,但它并不能工作。如果我打开Google Chrome调试器,我也会得到一个错误:Uncaught TypeError: Cannot read property '0' of undefined @ all.js:52。我尝试过使用urlencode,但还是出现了这个错误。如果我编写一个PHP脚本来检查graph.facebook.com链接上的评论,那么网站将非常缓慢。 - Tamas Kinsztler
从JS-SDK URL中删除#后面的部分,这样Facebook就不会尝试调用FB.init两次,因为您手动调用它。 - Juicy Scripter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接