使用FQL获取所有facebook消息

使用FQL获取所有facebook消息,facebook,facebook-graph-api,facebook-fql,Facebook,Facebook Graph Api,Facebook Fql,我需要为一个具有FQL的facebook用户获取线程内的所有用户线程和消息 当我运行下面的FQL时,它会返回我所有的线程ID select thread_id,message_count from thread where viewer_id = me() and folder_id = 0 显示收件箱文件夹中的线程和邮件计数 { "data": [ { "thread_id": "196940283688620", "message_count"

我需要为一个具有FQL的facebook用户获取线程内的所有用户线程和消息

当我运行下面的FQL时,它会返回我所有的线程ID

select thread_id,message_count from thread where viewer_id = me() and folder_id = 0
显示收件箱文件夹中的线程和邮件计数

    {
  "data": [
    {
      "thread_id": "196940283688620", 
      "message_count": 99
    }, 
    {
      "thread_id": "283904071679203", 
      "message_count": 1
    }, 
但是当我运行下面的查询以获取给定线程id中的所有消息时,假设
“线程id”:“196940283688620”,

select message_id,body,viewer_id , thread_id from message where thread_id = 196940283688620 and viewer_id = me()
由于第一个查询结果显示我在
的“thread\u id”:“196940283688620”中有99条消息,
但是查询只返回了20条消息

1-我出了什么问题?在一个FQL中获取一个线程中的所有消息需要什么,还是需要多个FQL?
2-对于facebook认证用户,获取线程内所有线程和消息的最佳方式是什么

对于Facebook没有返回线程中显示的所有消息的问题,您可能遇到了默认的内部限制。您可以通过在FQL中使用
LIMIT
语句绕过此问题:

SELECT message_id,body,viewer_id, thread_id FROM message 
  WHERE thread_id = 196940283688620 AND viewer_id = me() LIMIT 200
根据我的经验,Facebook设置了500或5000个项目的最大限制,这取决于对象。当您超过其最大值时,您将开始获得比返回的限制少得多的项目。此时,您需要找到一种通过多个查询对数据进行分页的方法

至于获取所有线程和消息的最有效方法,这是一个很好的例子

您可以将查询重组为如下内容:(为可读性添加了空格)


我的解决方案如下:

SELECT message_id,body,viewer_id, thread_id FROM message 
  WHERE thread_id = 196940283688620 AND viewer_id = me() LIMIT 0,30 
获得前30个结果 然后

接下来的30个元素


等等。。。我还没有找到更好的解决方案。

我可以进行多重查询,但仍然没有返回所有消息您缺少的消息是否有任何模式?我写
限制200
,但仍然只显示20个结果。但是
限制20,40
显示接下来的20个结果。
SELECT message_id,body,viewer_id, thread_id FROM message 
  WHERE thread_id = 196940283688620 AND viewer_id = me() LIMIT 0,30 
SELECT message_id,body,viewer_id, thread_id FROM message 
      WHERE thread_id = 196940283688620 AND viewer_id = me() LIMIT 30,60