6

I'm wondering if there's a way to use the Facebook4J API to get all (or even recent) posts from a facebook page?

I know it's possible to get all posts from a user's wall or feed, but I can't find anything in the API or the documentation that shows how to get posts from a page.

Looking at http://facebook4j.org/en/api-support.html#page , it would appear that there is in fact a set of Page related methods, but clicking on any one of them simply refreshes the page, making me think that maybe they are planned but not yet implemented?

I know it's possible to get posts from a page using the graph API, but I'd really rather stick with Facebook4j, if possible.

Any input would be greatly appreciated!

peak
  • 105,803
  • 17
  • 152
  • 177
YYZ
  • 749
  • 4
  • 8
  • 18

2 Answers2

12

Here is a minimal example for your problem: Note that you can get the access token and the page ID from https://developers.facebook.com/tools/explorer Use this id below in your code:

import facebook4j.Comment;
import facebook4j.Facebook;
import facebook4j.FacebookException;
import facebook4j.FacebookFactory;
import facebook4j.PagableList;
import facebook4j.Post;
import facebook4j.Reading;
import facebook4j.ResponseList;
import facebook4j.auth.AccessToken;

public class PostsFromPageExtractor {

/**
 * A simple Facebook4J client which
 * illustrates how to access group feeds / posts / comments.
 * 
 * @param args
 * @throws FacebookException 
 */
public static void main(String[] args) throws FacebookException {

    // Generate facebook instance.
    Facebook facebook = new FacebookFactory().getInstance();
    // Use default values for oauth app id.
    facebook.setOAuthAppId("", "");
    // Get an access token from: 
    // https://developers.facebook.com/tools/explorer
    // Copy and paste it below.
    String accessTokenString = "PASTE_YOUR_ACCESS_TOKEN_HERE";
    AccessToken at = new AccessToken(accessTokenString);
    // Set access token.
    facebook.setOAuthAccessToken(at);

    // We're done.
    // Access group feeds.
    // You can get the group ID from:
    // https://developers.facebook.com/tools/explorer

    // Set limit to 25 feeds.
    ResponseList<Post> feeds = facebook.getFeed("187446750783",
            new Reading().limit(25));

        // For all 25 feeds...
        for (int i = 0; i < feeds.size(); i++) {
            // Get post.
            Post post = feeds.get(i);
            // Get (string) message.
            String message = post.getMessage();
                            // Print out the message.
            System.out.println(message);

            // Get more stuff...
            PagableList<Comment> comments = post.getComments();
            String date = post.getCreatedTime().toString();
            String name = post.getFrom().getName();
            String id = post.getId();
        }           
    }
}
Niko Schenk
  • 271
  • 3
  • 7
  • How do you get page id in getFeed("187446750783" ? – Wild Fire May 11 '16 at 15:10
  • But if we are hard coding the appId and appSecret in our then it will give access to my own fb page to person whoever is running that code. – JGS Jun 23 '16 at 08:01
  • Is there any other way in which we can fetch the appId, appSecret and accessToken by not hardcoding the above values in it. – JGS Jun 23 '16 at 08:03
  • 2
    the above code doesn't work , it gives the facebookexception: "graph.facebook.com FacebookException{statusCode=-1, errorType='null', errorMessage='null', errorCode=-1, errorSubcode=-1, version=2.4.5}" – JGS Jun 23 '16 at 11:41
  • How to get all the post from page without visitors post? I only need public post by the page itself. Currently I call getFeed() method and it also return visitors post to that page. – Thong Vo Dec 07 '17 at 08:29
10

Facebook4J supports Page APIs since version 2.0.
You can get posts from a facebook page via Facebook#getFeed(PAGE_ID). example:

    ResponseList<Post> feed = facebook.getFeed("eclipse.org");

javadoc: http://facebook4j.org/javadoc/facebook4j/api/PostMethods.html#getFeed()

roundrop
  • 188
  • 1
  • 6