Objective c 错误:“对邮箱_fql的呼叫已超过每600秒300次呼叫的速率”

Objective c 错误:“对邮箱_fql的呼叫已超过每600秒300次呼叫的速率”,objective-c,facebook,macos,facebook-graph-api,inbox,Objective C,Facebook,Macos,Facebook Graph Api,Inbox,我收到Graph API错误613消息:对邮箱_fql的调用已超过每600秒300次调用的速率,请在测试我的应用程序时键入:OAutheException。这是一个桌面应用程序,唯一的副本是在我的机器上运行的,因此只有一个访问令牌和一个用户-我 我大约每15秒查询一次收件箱端点。结合起来,该应用程序每分钟对不同端点进行大约12次API调用。无论哪个调用获取第300个线程,它都会失败收件箱端点的第一页上大约有25个线程,而我只获取第一页。我没有批处理对Graph API的任何调用 我正在使用Obj

我收到Graph API错误613消息:对邮箱_fql的调用已超过每600秒300次调用的速率,请在测试我的应用程序时键入:OAutheException。这是一个桌面应用程序,唯一的副本是在我的机器上运行的,因此只有一个访问令牌和一个用户-我

我大约每15秒查询一次收件箱端点。结合起来,该应用程序每分钟对不同端点进行大约12次API调用。无论哪个调用获取第300个线程,它都会失败收件箱端点的第一页上大约有25个线程,而我只获取第一页。我没有批处理对Graph API的任何调用

我正在使用Objective-C在Mac OS X 10.7上开发。我使用NSURLConnection异步调用Graph API。据我所知,NSURLConnection处理的每个请求只会导致一个对Facebook API的请求

在上面,我很难弄清楚为什么我会收到这个错误。我怀疑这是因为对收件箱端点的单个调用,即对URI的调用https://graph.facebook.com/me/inbox?access_token=... 被计为对邮箱\u fql的多个调用。特别是,我认为返回线程的单个调用算作针对邮箱_fql的调用。如果是这种情况,是否有办法减少每次API调用对邮箱_fql的调用次数,例如只获取收件箱中最新的线程,而不是整个第一页

关于这个主题的文档似乎非常稀少,所以我不得不通过反复试验来解决。如果有人知道如何解决这个问题,我会非常激动。

编辑:结果表明,您可以传递一个limit-GET参数,该参数毫不奇怪地限制了结果的数量。但是,报告指出了这种方法的一些局限性,即如果用户看不到某些结果,则返回的结果可能少于请求的结果

该博客建议在调用标准Graph API时,使用until和/或since作为GET参数。这些参数采用任何兼容的字符串或Unix历元时间,并相应地限制您的结果

原答覆如下:

经过进一步研究,我的选择似乎是减少获取频率,或者使用自定义FQL查询来限制对邮箱\ U FQL的调用次数。我无法找到任何方法来限制标准Graph API调用对收件箱端点的响应。在本例中,我使用以下形式的FQL查询:

https://graph.facebook.com/fql?q=SELECT <fields> FROM thread WHERE folder_id=1 LIMIT <n>&access_token=...
是Facebook的线程FQL文档中描述的以逗号分隔的字段列表。thread是对应于inbox端点的表的文字名称;新的线程端点对应于统一的_线程表,但尚未公开。folder_id=1表示我们希望使用收件箱,而不是发件箱或更新文件夹

实际上,我将设置为5,这将导致在10分钟内以15秒的通话间隔对邮箱_fql进行200次合理的通话。在我的测试中,我没有收到错误613,所以我想它是有效的

我想这里的大多数人都已经熟悉FQL的来龙去脉了,但这对我来说是新的。我希望这能帮助其他处理类似问题的新手