简体   繁体   中英

FQL stream doesn't return the number of posts as defined by limit

I tried "SELECT post_id, actor_id, target_id, message, likes FROM stream WHERE source_id = me() LIMIT 100" , which returns me 81 instead of 100 posts, then I tried "SELECT post_id, actor_id, target_id, message, likes FROM stream WHERE source_id = me() LIMIT 50" , and expecting it returns 50 posts since the first query returns 81, but the result only contains 43 post.

Wondering how LIMIT work.

Besides, the created_time doesn't really works for me, "SELECT post_id, actor_id, target_id, message, likes FROM stream WHERE source_id = me() AND created_time > 1262196000 LIMIT 100" returns 81 posts, while "SELECT post_id, actor_id, target_id, message, likes FROM stream WHERE source_id = me() AND created_time > 1262196000" returns only 5. Any idea?

Yes, that is normal. Facebook executes your FQL and returns all posts that match your query. In this case, with 100 posts.

Then Facebook filters out the posts that are not visible to your app. This is based on the actor's privacy settings. There is no visible_to_me field in the stream table that would allow you to pre-filter your results.

If you want 100 posts, ask for 200, then display the first 100. Most of the time, you'll get at least 100 posts in the result.

If you query stream without a LIMIT , you will get up to the last 50 posts or the last 30 days worth of items, whichever is fewer .

As a bonus, for your created_time queries, you can use strtotime() to create timestamps in FQL if you don't think in UNIX time stamps (I don't). It parses the same strings as the PHP strtotime() function.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM