我们的网站使用我们自己的评论系统(简单的php / mysql)以及fb评论插件。我希望能够添加每个的评论计数,以显示两者的评论总数。看起来很简单。
几个月前,我得到了这个工作。然后它突然停止工作。今天早上,我找到了一种新方法。让它在一个页面上工作,当我将代码添加到我们有评论的所有页面时,它已不再有效。我正在试着让我的头发工作,对json几乎一无所知。 FB API资源管理器给我一个关于auth令牌的错误,但是按照我推荐的做法没有效果(即创建一个新的fb应用程序并包括他们提供的auth代码块)。
这是最初工作正常的事情:
$fbcounturl = 'http://www.catalystathletics.com/articles/article.php?articleID=1902';
$fbjsonurl = "https://graph.facebook.com/v2.1/?fields=share{comment_count}&id=" .$fbcounturl;
$fbdata = file_get_contents($fbjsonurl);
$fbarray = json_decode($fbdata, true);
$fbcomcount = $fbarray['share']['comment_count'];
print($fbcomcount);
然后我可以简单地将$ fbcomcount添加到我们的数据库中的$ comCount。
如果我只是浏览到网址,我会得到json信息:
{
"share": {
"comment_count": 3
},
"id": "http://www.catalystathletics.com/articles/article.php?articleID=1902"
}
但$ fbcomcount是空的。
以下是使用此功能的页面示例 - http://www.catalystathletics.com/article/1902/Jumping-Forward-in-the-Snatch-or-Clean-Error-Correction/#comments
任何帮助都会非常感激。
答案 0 :(得分:0)
最近陷入同样的问题,Facebook评论计数只是停止了工作。最终跟踪返回的JSOn响应中的错误,告诉我Error #4 Application request limit reached
{"error":{"message":"(#4) Application request limit
reached","type":"OAuthException","is_transient":true,"code":4,"fbtrace_id":"EUNAVRNgnFu"}}`
以下是我在其他地方找到的Facebook Open Graph API限制的详细回复:
Facebook API限制并未真正记录,但显然它类似于:600 calls per 600 seconds, per token & per IP。由于网站受到限制,引用相关部分:
经过与Facebook平台团队的一些测试和讨论后,我不知道或可以在文档中找到官方限制。但是,我发现每600秒有600个电话,每个令牌&每个IP都是关于他们阻止你的地方。我也看到了一些基于应用程序的速率限制,但没有任何数字。
作为一般规则,每秒一次通话不应受到速率限制。从表面上看,这似乎非常严格,但请记住,您可以批量处理某些调用并使用订阅API进行更改。
您可以通过Javascript SDK访问客户端的Graph API;我认为,如果您从客户端访问您的照片请求,那么您将无法点击任何application limit
,因为它是用户(每个人都有唯一身份证)获取数据,而不是您的应用程序服务器(唯一ID)。
如果您所做的一切都通过服务器,这可能意味着一个巨大的重构。但是,如果您有这么多请求(因为它会给您的服务器一个呼吸),它似乎是最好的解决方案。
否则,您可以尝试batch
request,但我猜您已经采用了这种方式,如果您的流量很大。
如果没有任何效果,根据Facebook Platform Policy,您应该联系他们。
如果您超出或计划超过以下任何阈值,请contact us,因为您可能需要遵守其他条款:(> 5M MAU)或(每天100万次API调用)或( >每天50万次展示。