/posts
返回的结果是按照时间线逆序的,也就是最新的在最前边,而/comments
返回的结果则根据参数不同而有所差异;
/post返回的结果集如下所示:
{
"data": [ ],
"paging": {
"previous": "https://graph.facebook.com/v2.2/268397903239051/posts?since=1428572459&limit=25&__paging_token=***",
"next": "https://graph.facebook.com/v2.2/268397903239051/posts?limit=25&until=1425620047&__paging_token=***"
}
}
可以认为Facebook中的每一个item(post、评论、点赞、分享等)都有一个唯一的标记,当返回的结果有多页时,就需要使用这些标记进行分页操作,可以将其理解为时间戳。
都以当前时间为例,previous和next可以从字面上来理解,previous指的是今后将发生的,而next是指当前之前的下一个时间段,也就是更早的时间段发生的。所以在previous中使用since注明下次抓取所用的链接,表示从since代表的时间点开始到下次抓取时间;而next使用的是until,即从之前更早的一个时间点到until代表的时间点截至。
简单来说:如上图所示,抓取到的当前页中,第一条item的标记为since,最后一条的标记为until。
since标记存在于previous中,而until标记存在于next中
使用previous链接时,表示从since起的时间段;而使用until标记时,表示截至until的时间段。
使用since和until进行查询时,返回的结果集中都不包括since和until代表的item本身
/comments返回的结果集类似以下结果:
{
"data": [
{
……
},
……
],
"paging": {
"cursors": {
"after": "WTI5dGJXVnVkRjlqZFhKemIzSTZNVE01TURZd01Ua3dOemt5T1RJek56b3hOREk0TlRnME9EWXg=",
"before": "WTI5dGJXVnVkRjlqZFhKemIzSTZNVE01TURZd01UUTVOemt5T1RJM09Eb3hOREk0TlRnME9EQXc="
},
"next": "https://graph.facebook.com/v2.2/100009383222877_1390601437929284/comments?limit=2&summary=true&after=WTI5dGJXVnVkRjlqZFhKemIzSTZNVE01TURZd01Ua3dOemt5T1RJek56b3hOREk0TlRnME9EWXg="
}
}
由于是第一页,所以没有previous链接,这个和/posts是不一样的,对/posts来说,即使当前返回的已经是最新的结果,即since指向了当前时间,依然会有一个previous链接存在,当使用这个链接进行查询时,会返回空的data数组。
这里的after相当于之前的until,before相当于since,同样可以从字面理解,after表示某时间点之后,before表示当某时间点之前。如图所示: