Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Facebook Graph API评论计数突然停止工作_Php_Json_Facebook_Facebook Graph Api - Fatal编程技术网

Php Facebook Graph API评论计数突然停止工作

Php Facebook Graph API评论计数突然停止工作,php,json,facebook,facebook-graph-api,Php,Json,Facebook,Facebook Graph Api,我们的网站使用我们自己的评论系统(简单的php/mysql)和fb评论插件。我想能够添加每个的评论计数,以显示来自这两者的评论总数。看起来很简单 几个月前,我让它工作了。然后它突然停止了工作。今天早上,我找到了一种新的方法。在一个页面上运行,当我将代码添加到所有我们有评论的页面时,它已经不工作了 我对json几乎没有任何理解,我正在竭尽全力让它正常工作。FB API explorer向我提供了一个关于身份验证令牌的错误,但执行我认为推荐的操作没有任何效果(即创建新的FB应用程序并包含它们提供的身

我们的网站使用我们自己的评论系统(简单的php/mysql)和fb评论插件。我想能够添加每个的评论计数,以显示来自这两者的评论总数。看起来很简单

几个月前,我让它工作了。然后它突然停止了工作。今天早上,我找到了一种新的方法。在一个页面上运行,当我将代码添加到所有我们有评论的页面时,它已经不工作了

我对json几乎没有任何理解,我正在竭尽全力让它正常工作。FB API explorer向我提供了一个关于身份验证令牌的错误,但执行我认为推荐的操作没有任何效果(即创建新的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

如果我只是浏览到url,我会得到json信息:

    {
    "share": {
    "comment_count": 3
    },
    "id": "http://www.catalystathletics.com/articles/article.php?articleID=1902"
    }
但是$fbcomcount是空的

下面是一个使用此选项的页面示例-


如果有任何帮助,我们将不胜感激。

最近遇到了同样的问题,Facebook的评论计数只是停止了工作。最终在返回的JSOn响应中找到了错误,告诉我
error#4已达到应用程序请求限制

{"error":{"message":"(#4) Application request limit 
reached","type":"OAuthException","is_transient":true,"code":4,"fbtrace_id":"EUNAVRNgnFu"}}`

以下是我在别处找到的关于Facebook Open Graph API限制的详细回复:

Facebook的API限制并没有真正的文档化,但很明显它类似于:。由于现场受到限制,请引用相关部分:

在与Facebook平台团队进行了一些测试和讨论之后,我没有意识到或在文档中可以找到任何官方限制。然而,我发现每600秒、每令牌和每IP大约有600个呼叫会阻止你。我也见过一些基于应用程序的速率限制,但没有任何数字

一般来说,每秒一次呼叫不应受到速率限制。从表面上看,这似乎非常严格,但请记住,您可以批处理某些调用,并使用订阅API进行更改

因为您可以通过Javascript SDK在客户端访问Graph API;我认为,如果您从客户端发送照片请求,您不会达到任何
应用程序限制
,因为获取数据的是用户(每个用户都有唯一的id),而不是您的应用程序服务器(唯一id)

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

除此之外,你可以试试,但我想你已经走这条路了,如果你有大流量的话


如果这些都不起作用,根据调查,你应该联系他们

如果您超过或计划超过以下任何阈值,请遵守以下条款:(>500万MAU)或(>100万API调用/天)或(>5000万次/天)


您正在使用的不包括授权令牌。这是一个独特的密钥,facebook可以跟踪你对他们服务器的点击次数,并根据他们的策略限制点击次数。阅读他们的官方文件。你需要附加你的json url&access_token=app_id|app_secret,你可以通过执行系统之前告诉你的操作来获得。什么是
$fbdata
$fbarray
$fbcomcount
当你运行代码时?@EarleDavies在短时间内,它没有令牌。然而,我的理解是,这确实是问题所在,但我对我能找到的文档和其他信息感到困惑,因为似乎有几个相互矛盾的答案。要传递令牌,我只需将id/secret添加到原始$fbjsonurl中的查询字符串中?我一有机会就去试试。谢谢。@EarleDavies好的,现在可以了。非常感谢你。不过,我的后续问题是,对应用程序id和代码进行硬编码不是一个安全问题吗?我猜有一种比我聪明的人可以在源代码中看不到的情况下传递这些信息的方法。再次感谢,非常有用。是的,我知道FB让你在没有身份验证令牌的情况下从他们的API中提取东西,然后突然在没有警告的情况下撤销它,这真的很烦人。它让你觉得你不需要它,而事实上你需要它。如果您将其放入可公开查看的源代码(如javascript)中,则这只是一个安全问题,您不应该这样做。只要你把它放到你的PHP代码中,没有人能看到它。此外,令牌将过期,因此您可能需要了解如何自动重新生成令牌。我没有太多的经验做这件事,但我知道它在文档中抱歉。