使用FQL获取所有facebook消息
我需要为一个具有FQL的facebook用户获取线程内的所有用户线程和消息 当我运行下面的FQL时,它会返回我所有的线程ID使用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"
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