2015-03-24 96 views
1

我们的网站使用我们自己的评论系统(简单的PHP/MySQL),也是fb评论插件。我希望能够添加每个评论计数以显示来自两者的单个评论总数。看起来很简单。Facebook Graph API评论数突然停止工作

几个月前,我得到了这个工作。然后它突然停止工作。今天早上,我找到了一个新的方法来做到这一点。在一个页面上工作,当我将代码添加到所有我们有评论的页面时,它就不再有效。

我拉着我的头发试图得到这个工作,几乎没有理解JSON。 FB API浏览器给我提供了一个有关授权令牌的错误,但按照我推荐的方式进行的操作没有任何效果(即创建一个新的fb应用程序并包含它们提供的授权代码块)。

这是起初这个上午工作的罚款:

$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

任何帮助,将不胜感激。

+1

您正在使用的内容不包括授权令牌。这是一个独特的关键,它可以让Facebook跟踪你的服务器有多少点击量,并根据他们的策略限制它们。 https://developers.facebook.com/docs/facebook-login/access-tokens阅读他们的官方文档。你需要追加你的json url&access_token = app_id | app_secret,你可以通过做你之前提到的系统告诉你做的事情来获得它。 – 2015-03-24 21:57:28

+0

运行代码时,$ fbdata,$ fbarray和$ fbcomcount是什么? – WizKid 2015-03-24 21:57:29

+0

@EarleDavies在短暂的时间内它正常工作,它没有令牌。然而,我的理解是,这确实是问题所在,但是由于似乎存在几个相互矛盾的答案,所以我对我能找到的文档和其他信息感到困惑。要传递令牌,我只需将id/secret添加到原始$ fbjsonurl中的查询字符串中?我会尽快尝试一次,我有机会。谢谢。 – gmoney 2015-03-25 23:40:27

回答

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限制ISN真的没有记录,但显然是这样的:600 calls per 600 seconds, per token & per IP。由于网站被限制,引用相关部分:

经过与Facebook平台团队的一些测试和讨论后,我没有发现官方限制,或者可以在文档中找到官方限制。但是,我发现每600秒600个呼叫,每个IP每个令牌&都是关于他们阻止你的地方。我也看到了一些基于应用程序的速率限制,但没有任何数字。

作为一般规则,每秒一个呼叫不应受到速率限制。从表面上看,这看起来非常严格,但请记住,您可以批量调用特定的调用并使用订阅API来获取更改。

正如您可以通过JavaScript SDK访问客户端的Graph API;我认为,如果您旅行请求客户端的照片,您不会碰到任何application limit,因为它是用户(每个用户都有唯一ID)谁正在提取数据,而不是您的应用程序服务器(唯一ID)。

这可能意味着一个巨大的重构,如果你做的每件事都通过服务器。但是如果你有这么多的请求,它似乎是最好的解决方案(因为它会让你的服务器喘一口气)。

否则,你可以尝试batch request,但我想你已经开始这样了,如果你有很大的流量。


如果没有这项工作,根据Facebook Platform Policy你应该联系他们。

如果超过或计划超过,以下任何阈值取悦contact us,你可能会受到额外的条款:(> 500万MAU)或(>每天100M API调用)或(> 50M印象每天)。