facebook javascript API 中的分页如何工作? [英] How does paging in facebook javascript API work?

查看:22
本文介绍了facebook javascript API 中的分页如何工作?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用 javascript sdk 在我的 facebook 新闻提要中恢复上周的帖子.我能够获得第一页,但是,我不知道如何继续遍历其他页面.我已经用下面的代码试过了:

 $('#loadPosts').bind('click', function() {FB.api('/me/home',{since:'last week'}, getPosts);});getPosts = 函数(响应){for(response.data 中的元素){post = response.data[元素]控制台日志(后);}previousPage = response.paging.previous;控制台日志(上一页);//我可以调用 FB.api(previousPage, getPosts);??}

但是我得到一个 URL 作为上一页,我不知道如何从该 URL 进行 javascript FB.api 调用.有什么想法吗?

解决方案

好吧,对于一个简单的问题似乎有很多抱怨,我仍然相信我的旧答案可以澄清.无论如何,让我照顾你.:)

First:我发现您无法真正从第一页转到上一个"页面.理想情况下,我应该.所以,这是我提交的一个错误,你可能想要关注:https://developers.facebook.com/错误/391562790938294?browse=search_50fcac3ce094e7068176315

第二:如果这是故意的,你不能从第一页回到上一个"(因为没有上一个没有),但你肯定可以去到下一步".但是,由于 API 表现为光标,并且您已经向前移动,现在您的上一个"页面可以工作了.

问题的答案:
我得到一个 URL 作为上一页,但我不知道如何从该 URL 进行 javascript FB.api 调用.有什么想法吗?

<块引用>

是的,您可以进行 FB.api 调用.但我建议您改为进行 HTTP GET 调用,因为它更容易.另外,请注意,previous 可能会返回空数组,如 {"data":[]}

如何获取上一页/下一页?
在这里,我正在编写一个使用 jQuery 的小代码.如果您不想阅读代码,有两种方法:

  1. 使用上一个/下一个 URL 并发出 HTTP GET 请求.如果不为空,将带有下一组上一个"、下一个"链接.
  2. 解析 URL,并以 JSON 形式获取查询字符串并将其传递给 FB.api.我使用 jQuery BBQ 插件解析.

重要说明:在示例中,我使用下一个"URL,因为在第一个请求中,如果我使用上一个",它会给出空的 JSON,而不是给出过去的帖子.但是,一旦我向前移动了几页,我就可以使用上一个"URL.与 Google 结果一样,您不能在第 1 页上转到上一页,但可以从任何 > 1 页(参见下面的示例 3).这称为分页.

示例 1:使用 HTTP GET 的代码(首选):(我将加载 3 个帖子/页面并查看下三个页面)

<头><script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js"></script><script type="text/javascript" src="http://connect.facebook.net/en_US/all.js"></script><script type="text/javascript" src="https://raw.github.com/cowboy/jquery-bbq/master/jquery.ba-bbq.min.js"></script><脚本>变量 i = 0;var getPosts = 函数(响应){for(response.data 中的元素){post = response.data[元素]console.log(post.id + ": " +post.message);}//我可以调用 FB.api(nextPage, getPosts);??如果(我< 2){nextPage = response.paging.next;控制台日志(下一页);我++;//方法一:我用.$.get(nextPage, getPosts, "json");//可选:可以使用 $.getJSON 代替}}$(document).ready(function(){$('#loadPosts').bind('click', function() {FB.api('/me/home',{since:'yesterday','limit': '3'}, getPosts);});})<身体><div id="fb-root"></div><脚本>window.fbAsyncInit = function() {//初始化FB JS SDKFB.init({appId : 'XXXXXXXXXXXX',//在此填写您的应用 ID!status : true,//在初始化时检查登录状态?cookie : true,//设置会话 cookie 以允许您的服务器访问会话?});//添加事件监听器等额外的初始化代码放在这里};<button id="loadPosts">加载帖子</button><p>请打开开发者控制台看看发生了什么.在 Firefox 中,您可以使用 ctrl+shift+k,在 Chrome/Chromium 中使用 ctrl+shift+i</p>

回复:

100004192352945_156620584487686:未定义137723270230_10152423499430231:这一天,请为同胞们多多想想,我只是多多想一想,别无他法.642965867_10151211036740868:谢谢大家的祝福!这些愿望成就了我的一天!https://graph.facebook.com/677811901/home?limit=3&access_token=AAACYjXGS5FQBAIR3brc2LibjBcZCi2kRJUybG8VMaaJSZARQ8SzNE7BE4PBrDIFVZB0AaVEa1dZCpX1AZqunCVZB0AaVEa1dZCpX1AZqa88888888888888金宝博appx2010000000000&access_token=AAACYjXGS5FQBAIR3brc2LibjBcZCi2kRJUybG8VMaaJSZARQ8SzNE7367116489976035_536776529676696:愤怒.退出.生活.899605553_10152450871820554:未定义367116489976035_417820828298092:未定义https://graph.facebook.com/677811901/home?limit=3&access_token=AAACYjXGS5FQBAIR3brc2LibjBcZCi2kRJUybG8VMaaJSZARQ8SzNE7BE4PBrDIFVZB0AaVEa1dZCpX1AZqunCVZB0AaVEa1dZCpX1AZqunC7uvX1AZ10000D&amp;access_token=AAACYjXGS5FQBAIR3brc2LibjBcZCi2k137723270230_10152423148745231: Pratibha Patil 曾经很喜欢共和国日游行,特别是来访的首席客人邀请她访问他/她自己国家的部分.137723270230_10152423131700231:共和国日游行的翠鸟画面非常简单.维杰·马利亚骑自行车.367116489976035_484460034950769:未定义

示例 2:使用 FB.api 的代码:(我将加载 3 个帖子/页面并查看三个下一页)

<头><script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js"></script><script type="text/javascript" src="http://connect.facebook.net/en_US/all.js"></script><script type="text/javascript" src="https://raw.github.com/cowboy/jquery-bbq/master/jquery.ba-bbq.min.js"></script><脚本>变量 i = 0;var getPosts = 函数(响应){for(response.data 中的元素){post = response.data[元素]console.log(post.id + ": " +post.message);}//我可以调用 FB.api(nextPage, getPosts);??如果(我< 2){nextPage = response.paging.next;控制台日志(下一页);我++;//方法二:如果非得调用FB.apivar params = jQuery.deparam.querystring(nextPage);console.log(JSON.stringify(params, null, 2));FB.api('/me/home', params, getPosts)}}$(document).ready(function(){$('#loadPosts').bind('click', function() {FB.api('/me/home',{since:'yesterday','limit': '3'}, getPosts);});})<身体><div id="fb-root"></div><脚本>window.fbAsyncInit = function() {//初始化FB JS SDKFB.init({appId : 'XXXXXXXXXXXX',//在此填写您的应用 ID!status : true,//在初始化时检查登录状态?cookie : true,//设置会话 cookie 以允许您的服务器访问会话?});//添加事件监听器等额外的初始化代码放在这里};<button id="loadPosts">加载帖子</button><p>请打开开发者控制台看看发生了什么.在 Firefox 中,您可以使用 ctrl+shift+k,在 Chrome/Chromium 中使用 ctrl+shift+i</p>

回复:

367116489976035_536776529676696:愤怒.退出.生活.899605553_10152450871820554:未定义367116489976035_417820828298092:未定义{限制":3","access_token": "AAACYjXGS5FQBAIR3brc2LibjBcZCi2kRJUybG8VMaaJSZARQ8SzNE7BE4PBrDIFVZB0AaVEa1dZCpX1fhCvoD2rnq8uc8OGaIFhO9uvVXAZDZD",直到":1359179890"}137723270230_10152423148745231: Pratibha Patil 曾经很喜欢共和国日游行,特别是来访的首席客人邀请她访问他/她自己国家的部分.137723270230_10152423131700231:共和国日游行的翠鸟画面非常简单.维杰·马利亚骑自行车.367116489976035_484460034950769:未定义https://graph.facebook.com/677811901/home?limit=3&access_token=AAACYjXGS5FQBAIR3brc2LibjBcZCi2kRJUybG8VMaaJSZARQ8SzNE7BE4PBrDIFVZB0AaVEa1dZCpX1AZqunCVZB0AaVEa1dZCpX1AZqunX7uv188888888888888金宝博体育appX1AZ1fh888888888888888com{限制":3","access_token": "AAACYjXGS5FQBAIR3brc2LibjBcZCi2kRJUybG8VMaaJSZARQ8SzNE7BE4PBrDIFVZB0AaVEa1dZCpX1fhCvoD2rnq8uc8OGaIFhO9uvVXAZDZD",直到":1359178140"}655515199_403590309726450:共和国日的好决议505588854_496901583686790:喜欢慢动作揭示的秘密世界.693811975_10151217837201976:未定义

示例3:执行:page1 -> page2 -> page1 or page -> next -> previous 下面的代码会加载page1,然后跳转到next"页面(page2),然后来回到第 1 页,使用上一个"

<头><script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js"></script><script type="text/javascript" src="http://connect.facebook.net/en_US/all.js"></script><script type="text/javascript" src="https://raw.github.com/cowboy/jquery-bbq/master/jquery.ba-bbq.min.js"></script><脚本>变量 i = 0;var getPosts = 函数(响应){for(response.data 中的元素){post = response.data[元素]console.log(post.id + ": " +post.message);}//我可以调用 FB.api(nextPage, getPosts);??如果(我< 2){nextPage = response.paging.next;如果(我== 1)nextPage = response.paging.previous;控制台日志(下一页);我++;$.get(nextPage, getPosts, "json");//可选:可以使用 $.getJSON 代替}}$(document).ready(function(){$('#loadPosts').bind('click', function() {FB.api('/me/home',{since:'yesterday','limit': '3'}, getPosts);});})<身体><div id="fb-root"></div><脚本>window.fbAsyncInit = function() {//初始化FB JS SDKFB.init({appId : 'XXXXXXXXXXXX',//在此填写您的应用 ID!status : true,//在初始化时检查登录状态?cookie : true,//设置会话 cookie 以允许您的服务器访问会话?});//添加事件监听器等额外的初始化代码放在这里};<button id="loadPosts">加载帖子</button><p>请打开开发者控制台看看发生了什么.在 Firefox 中,您可以使用 ctrl+shift+k,在 Chrome/Chromium 中使用 ctrl+shift+i</p>

回复:

PAGE1:367116489976035_536806916340324:太阳系有多大?完整信息图在这里:http://bit.ly/WmzfVn137723270230_10152423534790231:社会学家"Ashis Nandy 声称大多数腐败分子来自 OBC/SC/ST 种姓.在此之后,腐败的人们强烈谴责南迪试图在种姓上分裂他们.他们将永远团结在战利品中.100004192352945_156620584487686:未定义第2页:https://graph.facebook.com/677811901/home?limit=3&access_token=AAACYjXGS5FQBAKqIMyCVYjH9upK4e2bjUwLoVbbFDL0ffc0SZBTVR9MUFGV4ZCq6HBdFIadFMpLDC3ATMZWTlG5avz5GpLDC3ATMZWTlG55&amp;access_token=AAACYjXGS5FQBAKqIMyCVYjH9upK4e2bjUwLoVbbFDL0ffc0SZBTVR9137723270230_10152423499430231:这一天,请为同胞们多多想想,我只是多多想一想,别无他法.642965867_10151211036740868:谢谢大家的祝福!这些愿望成就了我的一天!367116489976035_536776529676696:愤怒.退出.生活.第 1 页:https://graph.facebook.com/677811901/home?limit=3&access_token=AAACYjXGS5FQBAKqIMyCVYjH9upK4e2bjUwLoVbbFDL0ffc0SZBTVR9MUFGV4ZCq6HBdFIadFMpLDC3ATMZOdfmpLDC3ATMZOpDv1&amp;access_token=AAACYjXGS5FQBAKqIMyCVYjH9upK4a367116489976035_536806916340324:太阳系有多大?完整信息图在这里:http://bit.ly/WmzfVn137723270230_10152423534790231:社会学家"Ashis Nandy 声称大多数腐败分子来自 OBC/SC/ST 种姓.在此之后,腐败的人们强烈谴责南迪试图在种姓上分裂他们.他们将永远团结在战利品中.100004192352945_156620584487686:未定义

<小时>

旧答案

使用limitoffsetsinceuntil 参数来实现您的目标.

参考:http://developers.facebook.com/docs/reference/api/><块引用>

分页

查询连接时,有几个有用的参数可以让您过滤和分页连接数据:

以下应该获得从 上周yesterday 的所有帖子,从 21st - 30th 消息(基本上,每个 10 条消息的第三页页面分页).

 FB.api('/我/家',{'自从上周以来','限制':'10','偏移':'20','直到':'昨天'},获取帖子);

<小时>

我刚刚测试过,它有效.我使用了 limit=4,这是页面大小的东西.所以,当我从 2011 年 2 月 2 日(Unix 时间戳:1296626400)到现在使用这个获取数据时

https://graph.facebook.com/me/home?access_token=[AUTH_TOKEN]&since=1296626400&limit=4

它返回数据,另外还返回 URL 以转到下一页

<代码>{数据": [<这里的帖子数组>],分页":{"previous": "https://graph.facebook.com/me/home?access_token=[NEW_AUTH_TOKEN]&since=1298026753&limit=4","next": "https://graph.facebook.com/me/home?access_token=[NEW_AUTH_TOKEN]&limit=4&until=1298023222"}}

您可以安全地使用 JSON 对象的 previousnext 属性跳转到下一页(或上一页).这似乎是最简单的方法.

顺便说一下,u00257C 需要转换为 | 才能使其工作.

I'm trying to recover the last week posts in my facebook news feed with the javascript sdk. I'm able to get the first page but then, I don't know how to continue iterating through the other pages. I've tried it with the following code:

 $('#loadPosts').bind('click', function() {     
            FB.api('/me/home',{since:'last week'}, getPosts);   
          });

 getPosts = function(response){
        for (element in response.data){
            post = response.data[element]
            console.log(post);          
          }

          previousPage = response.paging.previous;        
          console.log(previousPage);

          // can i call FB.api(previousPage, getPosts); ??      

      }

But I'm getting a URL as previous page and I don't know how to make a javascript FB.api call from that URL. Any ideas?

解决方案

Alright, it seems a lot of whining about a simple issue that I still believe my old answer clarifies. Anyway, let me babysit you. :)

First: I find out that you cannot really go to the "previous" page from the first page. Ideally, I should. So, here is a bug that I have filed you may want to follow: https://developers.facebook.com/bugs/391562790938294?browse=search_50fcac3ce094e7068176315

Second: If this is by design, you cannot go back to "previous" from the first page (because there is no previous), but you can surely go to "Next". However, since the API behaves as a cursor, and you have moved forward, now your "previous" page would work.

The answer to the question:
I'm getting a URL as previous page and I don't know how to make a javascript FB.api call from that URL. Any ideas?

yes, you can make FB.api call. But I suggest you to make a HTTP GET call instead, because it's easier. Also, note that previous may return and empty array like {"data":[]}

How to get previous/next page?
Here, I am writing a small code that uses jQuery. In case you do not want to read the code, there are two ways:

  1. Use previous/next URL and make HTTP GET request. Which, if not empty, will come with next set of "previous", "next" link.
  2. Parse the URL, and get the query-string as JSON ans pass it to FB.api. I used jQuery BBQ pluging for parsing.

Important Note: In the example, I am using "next" URL because on the first request if I use "previous" it gives empty JSON instead of giving posts from the past. However, I can use use "previous" URL once I have moved ahead a few pages. Like Google results, you can not go previous on page 1, but you can from any page > 1 (see Example 3 below). This is called pagination.

Example 1: Code using HTTP GET (preferred): (I will load 3 posts/page and look three next-pages)

<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js"></script>
<script type="text/javascript" src="http://connect.facebook.net/en_US/all.js"></script>
<script type="text/javascript" src="https://raw.github.com/cowboy/jquery-bbq/master/jquery.ba-bbq.min.js"></script>
<script>

var i =0;
var getPosts = function (response){
          for (element in response.data){
            post = response.data[element]
            console.log(post.id + ": " +post.message);          
          }



          // can i call FB.api(nextPage, getPosts); ??
          if(i < 2){
              nextPage = response.paging.next;        
              console.log(nextPage);
              i++;
              //Method 1: I use it.
              $.get(nextPage, getPosts, "json"); //optional: $.getJSON can be use instead
          }

      }

$(document).ready(function(){

$('#loadPosts').bind('click', function() {
            FB.api('/me/home',{since:'yesterday','limit': '3'}, getPosts);   
          });
})
</script>
</head>
<body>
<div id="fb-root"></div>
<script>
  window.fbAsyncInit = function() {
    // init the FB JS SDK
    FB.init({
      appId      : 'XXXXXXXXXXXX', // FILL YOUR APP ID HERE!
      status     : true, // check the login status upon init?
      cookie     : true, // set sessions cookies to allow your server to access the session?
    });

    // Additional initialization code such as adding Event Listeners goes here

  };
</script>
<button id="loadPosts">Load Posts</button>
<p>Please open developer console to see what's happening. In Firefox, you can use ctrl+shift+k, and in Chrome/Chromium use ctrl+shift+i</p>
</body>
</html>

Response:

100004192352945_156620584487686: undefined
137723270230_10152423499430231: On this day, please spare a thought for those fellow citizens, for whom I just spare a thought and do nothing else.
642965867_10151211036740868: Thanks everyone for their wishes! The wishes made my day!

https://graph.facebook.com/677811901/home?limit=3&access_token=AAACYjXGS5FQBAIR3brc2LibjBcZCi2kRJUybG8VMaaJSZARQ8SzNE7BE4PBrDIFVZB0AaVEa1dZCpX1fhCvoD2rnq8uc8OGaIFhO9uvVXAZDZD&until=1359184568
367116489976035_536776529676696: Rage. Quit. Life.
899605553_10152450871820554: undefined
367116489976035_417820828298092: undefined

https://graph.facebook.com/677811901/home?limit=3&access_token=AAACYjXGS5FQBAIR3brc2LibjBcZCi2kRJUybG8VMaaJSZARQ8SzNE7BE4PBrDIFVZB0AaVEa1dZCpX1fhCvoD2rnq8uc8OGaIFhO9uvVXAZDZD&until=1359179890
137723270230_10152423148745231: Pratibha Patil used to love the Republic Day Parade, especially the part where the visiting Chief Guest extended her an invitation to visit his/her own country.
137723270230_10152423131700231: The Kingfisher tableau at Republic Day Parade was so simple. Vijay Mallya riding a bicycle.
367116489976035_484460034950769: undefined

Example 2: Code using FB.api: (I will load 3 posts/page and look three next-pages)

<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js"></script>
<script type="text/javascript" src="http://connect.facebook.net/en_US/all.js"></script>
<script type="text/javascript" src="https://raw.github.com/cowboy/jquery-bbq/master/jquery.ba-bbq.min.js"></script>
<script>

var i =0;
var getPosts = function (response){
          for (element in response.data){
            post = response.data[element]
            console.log(post.id + ": " +post.message);          
          }



          // can i call FB.api(nextPage, getPosts); ??
          if(i < 2){
              nextPage = response.paging.next;        
              console.log(nextPage);
              i++;

              //Method 2: If you have to call FB.api
              var params = jQuery.deparam.querystring(nextPage);
              console.log(JSON.stringify(params, null, 2));
              FB.api('/me/home', params, getPosts)
          }

      }

$(document).ready(function(){

$('#loadPosts').bind('click', function() {
            FB.api('/me/home',{since:'yesterday','limit': '3'}, getPosts);   
          });
})
</script>
</head>
<body>
<div id="fb-root"></div>
<script>
  window.fbAsyncInit = function() {
    // init the FB JS SDK
    FB.init({
      appId      : 'XXXXXXXXXXXX', // FILL YOUR APP ID HERE!
      status     : true, // check the login status upon init?
      cookie     : true, // set sessions cookies to allow your server to access the session?
    });

    // Additional initialization code such as adding Event Listeners goes here

  };
</script>
<button id="loadPosts">Load Posts</button>
<p>Please open developer console to see what's happening. In Firefox, you can use ctrl+shift+k, and in Chrome/Chromium use ctrl+shift+i</p>
</body>
</html>

Response:

367116489976035_536776529676696: Rage. Quit. Life.
899605553_10152450871820554: undefined
367116489976035_417820828298092: undefined
{
  "limit": "3",
  "access_token": "AAACYjXGS5FQBAIR3brc2LibjBcZCi2kRJUybG8VMaaJSZARQ8SzNE7BE4PBrDIFVZB0AaVEa1dZCpX1fhCvoD2rnq8uc8OGaIFhO9uvVXAZDZD",
  "until": "1359179890"
}

137723270230_10152423148745231: Pratibha Patil used to love the Republic Day Parade, especially the part where the visiting Chief Guest extended her an invitation to visit his/her own country.
137723270230_10152423131700231: The Kingfisher tableau at Republic Day Parade was so simple. Vijay Mallya riding a bicycle.
367116489976035_484460034950769: undefined

https://graph.facebook.com/677811901/home?limit=3&access_token=AAACYjXGS5FQBAIR3brc2LibjBcZCi2kRJUybG8VMaaJSZARQ8SzNE7BE4PBrDIFVZB0AaVEa1dZCpX1fhCvoD2rnq8uc8OGaIFhO9uvVXAZDZD&until=1359178140
{
  "limit": "3",
  "access_token": "AAACYjXGS5FQBAIR3brc2LibjBcZCi2kRJUybG8VMaaJSZARQ8SzNE7BE4PBrDIFVZB0AaVEa1dZCpX1fhCvoD2rnq8uc8OGaIFhO9uvVXAZDZD",
  "until": "1359178140"
}
655515199_403590309726450: a good resolution to take on Republic Day
505588854_496901583686790: Love the secret world that slow motion reveals.
693811975_10151217837201976: undefined

Example 3: Performing: page1 -> page2 -> page1 or page -> next -> previous The following code will load page1, then go to "next" page (page2), then come back to page1, using "previous"

<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js"></script>
<script type="text/javascript" src="http://connect.facebook.net/en_US/all.js"></script>
<script type="text/javascript" src="https://raw.github.com/cowboy/jquery-bbq/master/jquery.ba-bbq.min.js"></script>
<script>

var i =0;
var getPosts = function (response){
          for (element in response.data){
            post = response.data[element]
            console.log(post.id + ": " +post.message);          
          }



          // can i call FB.api(nextPage, getPosts); ??
          if(i < 2){
              nextPage = response.paging.next;        
              if(i==1)
                nextPage = response.paging.previous;

              console.log(nextPage);
              i++;
              $.get(nextPage, getPosts, "json"); //optional: $.getJSON can be use instead
          }

      }

$(document).ready(function(){

$('#loadPosts').bind('click', function() {
            FB.api('/me/home',{since:'yesterday','limit': '3'}, getPosts);   
          });
})
</script>
</head>
<body>
<div id="fb-root"></div>
<script>
  window.fbAsyncInit = function() {
    // init the FB JS SDK
    FB.init({
      appId      : 'XXXXXXXXXXXX', // FILL YOUR APP ID HERE!
      status     : true, // check the login status upon init?
      cookie     : true, // set sessions cookies to allow your server to access the session?
    });

    // Additional initialization code such as adding Event Listeners goes here

  };
</script>
<button id="loadPosts">Load Posts</button>
<p>Please open developer console to see what's happening. In Firefox, you can use ctrl+shift+k, and in Chrome/Chromium use ctrl+shift+i</p>
</body>
</html>

Response:

PAGE1:
367116489976035_536806916340324: How big is the Solar System?
Full infographic here: http://bit.ly/WmzfVn
137723270230_10152423534790231: "Sociologist" Ashis Nandy has claimed that most of the corrupt came from OBC/SC/ST castes.
Following this, Corrupt people have strongly condemned Nandy's attempts to divide them on caste lines. They'll be united in loot, forever.
100004192352945_156620584487686: undefined

PAGE2:
https://graph.facebook.com/677811901/home?limit=3&access_token=AAACYjXGS5FQBAKqIMyCVYjH9upK4e2bjUwLoVbbFDL0ffc0SZBTVR9MUFGV4ZCq6HBdFIadFMpLDC3ATMZCJ4GPsXWpG4qTGODavuvzLAZDZD&until=1359185659

137723270230_10152423499430231: On this day, please spare a thought for those fellow citizens, for whom I just spare a thought and do nothing else.
642965867_10151211036740868: Thanks everyone for their wishes! The wishes made my day!
367116489976035_536776529676696: Rage. Quit. Life.

PAGE1:
https://graph.facebook.com/677811901/home?limit=3&access_token=AAACYjXGS5FQBAKqIMyCVYjH9upK4e2bjUwLoVbbFDL0ffc0SZBTVR9MUFGV4ZCq6HBdFIadFMpLDC3ATMZCJ4GPsXWpG4qTGODavuvzLAZDZD&since=1359185123&__previous=1

367116489976035_536806916340324: How big is the Solar System?
Full infographic here: http://bit.ly/WmzfVn
137723270230_10152423534790231: "Sociologist" Ashis Nandy has claimed that most of the corrupt came from OBC/SC/ST castes.
Following this, Corrupt people have strongly condemned Nandy's attempts to divide them on caste lines. They'll be united in loot, forever.
100004192352945_156620584487686: undefined


OLD ANSWER

Use limit, offset, since and until parameters to achieve your goal.

Refer: http://developers.facebook.com/docs/reference/api/

Paging

When querying connections, there are several useful parameters that enable you to filter and page through connection data:

The following should get all the posts since last week until yesterday from 21st - 30th message (basically, third page of 10 message per page pagination).

 FB.api(
  '/me/home',
  {
    'since':'last week',
    'limit': '10',
    'offset': '20',
    'until': 'yesterday'
  }, 
  getPosts
); 


I've just tested, it works. I have used limit=4, which is page-size kind of thing. So, when I fetch data since Feb 02, 2011 (Unix Time Stamp: 1296626400) till today using this

https://graph.facebook.com/me/home?access_token=[AUTH_TOKEN]&since=1296626400&limit=4

It returns the data, plus it also return URL to go to next page

{
   "data": [
      <ARRAY OF POSTS HERE>
   ],
   "paging": {
      "previous": "https://graph.facebook.com/me/home?access_token=[NEW_AUTH_TOKEN]&since=1298026753&limit=4",
      "next": "https://graph.facebook.com/me/home?access_token=[NEW_AUTH_TOKEN]&limit=4&until=1298023222"
   }
}

You can safely use previous and next attributes of the JSON object to jump to next page (or previous page). This seems to be the easiest way to do.

By the way, u00257C needed to be converted to | to get this to work.

这篇关于facebook javascript API 中的分页如何工作?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆