Facebook Graph API - 关于since、until、before和after

/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表示当某时间点之前。如图所示:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值