2015-11-13 45 views
0

当我尝试获取用户在Facebook4j上使用流放置在墙上的所有Facebook帖子时,我似乎只能够获得最近14天内的帖子。有没有办法绕过这个限制,并让用户在墙上张贴的每条消息?Facebook4j将帖子限制在最近2周内?

我正在使用分页,并从过去的2周获得550条消息,但没有进一步的比。

这是我的代码

private void printFBMessages(FileWriter fileWriter, String nameFeed) 
     throws InterruptedException, IOException, FacebookException { 
    int n = 0; 
    boolean notEmpty = true; 
    while (notEmpty) { 
     try { 
      notEmpty = false; 
      System.out.println("N: " + n); 
      for (Post post : facebook.getFeed(nameFeed, new Reading().limit(100).offset(n))) { 
       notEmpty = true; 
       MessageInfo msg = new MessageInfo(); 
       msg.setDate(post.getCreatedTime().toString()); 
       msg.setTitle(post.getMessage()); 
       System.out.println(msg); 
       n++; 

       addControleToResult(fileWriter, nameFeed, msg); 
      } 
      if (!notEmpty) { 
       System.out.println("Empty"); 
      } 
     } catch (FacebookException ex) { 
      System.out.println(ex.getMessage()); 
      Thread.sleep(300000); 
     } 
     n++; 
    } 
    System.out.println("Done!"); 
    return; 
} 

回答

0

看来我正在处理分页错误的,这就是为什么它没有按预期工作的原因。

这是代码的例子,实际上按预期工作:

private void printFBMessages(FileWriter fileWriter, String nameFeed) 
     throws InterruptedException, IOException, FacebookException { 
    boolean notEmpty = true; 

    facebook4j.ResponseList<Post> posts = facebook.getFeed(nameFeed, new Reading().limit(100)); 

    while (notEmpty) { 
     try { 
      notEmpty = false; 

      for (Post post : posts) { 
       notEmpty = true; 
       MessageInfo msg = new MessageInfo(); 
       msg.setDate(post.getCreatedTime().toString()); 
       msg.setTitle(post.getMessage()); 
       System.out.println(msg); 

       addControleToResult(fileWriter, nameFeed, msg); 
      }    
      posts = facebook.fetchNext(posts.getPaging()); 
     } catch (FacebookException ex) { 
      System.out.println(ex.getMessage()); 
      Thread.sleep(300000); 
     } 
    } 
    System.out.println("Done!"); 
    return; 
} 
相关问题