我想了解我墙的完整历史。但是我似乎在六月份的某个地方达到了极限。
我做了这样的多次调用:
SELECT created_time,message FROM stream WHERE source_id=MY_USER_ID LIMIT 50
SELECT created_time,message FROM stream WHERE source_id=MY_USER_ID LIMIT 51,100
依旧......
但我总是在墙上的最后(第一篇)帖子上结束。 通过facebook.com我可以回去更长时间,因此Facebook显然拥有数据。
为什么我没有收到较旧的帖子? 还有另一种方法可以摧毁我的历史吗?
答案 0 :(得分:12)
来自http://developers.facebook.com/docs/reference/fql/stream:
流表仅限于过去30天或50个帖子,以较大者为准
答案 1 :(得分:9)
理论上,这意味着总是增加限制以匹配偏移量会修复它,但我无法验证这一点(我不确定我看到的问题是否是我的代码中的其他错误或如果还有其他限制我不明白获得流)。
任何人都能解释我所看到的以及我所缺少的东西吗?
您可以通过访问FQL测试控制台来重现我的结果:
http://developers.facebook.com/docs/reference/rest/fql.query
粘贴此查询:
SELECT post_id, created_time, message, likes, comments, attachment, permalink, source_id, actor_id
FROM stream
WHERE filter_key IN
(
SELECT filter_key
FROM stream_filter
WHERE uid=me() AND type='newsfeed'
)
AND is_hidden = 0 limit 100 offset 150
当您点击“测试方法”时,您将看到我得到的2个结果中的一个:
您可能需要通过更改“偏移”值进行试验,直到找到确切的位置。刚才我发现它在155和156时打破了。
尝试更改限制和偏移量,您将看到在流中的特定位置不会出现空结果。以下是我见过的一些结果示例:
除了看到limit = offset * 1.5的关系外,我真的不明白这里发生了什么。
答案 2 :(得分:3)
跳过FQL并直接进入图表。我尝试了FQL,当它达到限制并获得指定的日期范围时,它是错误的。这是图表地址。放入你自己的页面facebook_id和access_token:
https://graph.facebook.com/FACEBOOK_ID/posts?access_token=ACCESS_TOKEN
然后,如果您想使用since
,until
和limit
设置日期范围:
那些开始和结束日期都是在unix时间,我使用了限制,因为如果我不这样做,它一次只能给我25个。最后,如果您想要了解帖子的见解,则必须访问每篇帖子并获取该帖子的见解:
https://graph.facebook.com/POST_ID/insights?access_token=ACCESS_TOKEN
答案 3 :(得分:3)
我不知道为什么,但是当我使用filter_key = 'others'
时LIMIT xx
工作。
这是我的fql查询
SELECT message, attachment, message_tags FROM stream WHERE type = 'xx' AND source_id = xxxx AND is_hidden = 0 AND filter_key = 'others' LIMIT 5
现在我收到5个帖子......当我使用LIMIT 7
时,我得到7个等等。
答案 4 :(得分:1)
正如@Subcreation所说,使用LIMIT和OFFSET进行FQL时会出现问题,而LIMIT / OFFSET比率似乎更高。
我在Facebook http://developers.facebook.com/bugs/303076713093995创建了一个问题。我建议你订阅它并表明你可以重现它以使它优先升级。
在该错误中,我描述了简单流FQL如何根据其LIMIT / OFFSET返回非常不一致的响应计数。例如:
433 - LIMIT 500 OFFSET 0
333 - LIMIT 500 OFFSET 100
100 - LIMIT 100 OFFSET 0
0 - LIMIT 100 OFFSET 100
113 - LIMIT 200 OFFSET 100
193 - LIMIT 200 OFFSET 20
答案 5 :(得分:0)
使用LIMIT时,你得到的最大值为1000 FQL:SELECT user_id FROM like WHERE object_id = 10151751324059927 LIMIT 20000000
答案 6 :(得分:0)
您可以为facebook查询指定created_time。 create_time字段是基于unix的时间。你可以用转换器http://www.onlineconversion.com/unix_time.htm转换它,或者使用程序方法取决于你的语言。
基于您的请求的模板
SELECT created_time,message FROM stream WHERE source_id=MY_USER_ID and created_time>BEGIN_OF_RANGE and created_time>END_OF_RANGE LIMIT 50
2012年9月20日至2013年9月20日的具体例子
SELECT created_time,message FROM stream WHERE source_id=MY_USER_ID and created_time>1348099200 and created_time>1379635200 LIMIT 50
答案 7 :(得分:0)
我有一个类似的问题,试图从公共页面下载较旧的帖子,添加过滤器'AND created_time< t',并将每个查询的t设置为到目前为止最小的created_time。奇怪的是,对于t的某些值,这会返回一个空集,但如果我手动设置t一两个小时,那么我会再次开始获得结果。我尝试使用资源管理器对此进行调试,并得到一个点,其中某个t会得到0结果,而t-1会得到结果,重复会给我相同的行为。
我认为这可能是一个错误,因为很明显,如果我创建了_time< t-1给出了结果,然后是created_time<应该。 如果这是一个速率限制或访问权限的问题,那么我应该得到一个错误,而不是我得到一个空集,只有一些t值。
我的建议是过滤created_time,并在停止获取结果时手动更改。
答案 8 :(得分:-4)
用逗号试试:
SELECT post_id, created_time, message, likes, comments, attachment, permalink, source_id, actor_id FROM stream WHERE filter_key IN (SELECT filter_key FROM stream_filter WHERE uid=me() AND type='newsfeed') AND is_hidden = 0 limit 11,5