Yatin
Yatin

Reputation: 697

Extraction reactions data from facebook via restFb java api?

The new facebook api allows us to get reactions on a post on a page, for this fb has created a reactions edge I am able to extract data from this edge by simple hitting post-id/reactions from the graph api explorer.

Here is the graph api request :-

1497117777255241_1526440124323006/reactions

and the response data

{ "data": [ { "id": "100008182891350", "name": "Harsh Sharma", "type": "LOVE" } ], "paging": { "cursors": { "before": "TVRBd01EQTRNVGd5T0RreE16VXdPakUwTmpRd01EQTROalk2TnpnNE5qUTRNRE0zT1RFek16RXkZD", "after": "TVRBd01EQTRNVGd5T0RreE16VXdPakUwTmpRd01EQTROalk2TnpnNE5qUTRNRE0zT1RFek16RXkZD" } } }

now i try to do the same using the java rest fb api in which I first extract the post and then using that object I call the get reactions method on it but I dont get any data. Here is the sample code for the same :-

reactionsCount=post.getReactionsCount();
        System.out.println("post id-->"+post.getId()+"  reactions--->"+post.getReactionsCount());
        reactionsObj=post.getReactions();

for the above post id : there is a reaction on it but I am getting the reaction count as zero via restFB, but I am getting data from graph api.

The reactionObj is also null every time (obtained via reactionsObj=post.getReactions(); )

if(reactionsObj!=null)
            {
                System.out.println("bring it on reactions-------");
                    for (ReactionItem reactionListItem : reactionsObj.getData()) 
                    {
                        reactionsMap.put("id", reactionListItem.getId());
                        reactionsMap.put("name", reactionListItem.getName() );
                        reactionsMap.put("type",reactionListItem.getType() );


                    }
}

I am getting posts/comments/likes successfully, only the reactions edge is creating problems. Please let me know where I am going wrong.

Edit

Connection<Post>  postSearch =FacebookClientBean.getFacebookclient().fetchConnection(pageId+"/feed", Post.class);

Upvotes: 1

Views: 1553

Answers (1)

Norbert
Norbert

Reputation: 1462

Collected solutions from the comments:

to get reactions on a Post you have to add the field in the request like this:

fetchConnection(pageId+"/feed", Post.class, Parameter.with("fields","reactions.summary(1)"));

An error message with the content requires version v2.6 or higher is a hint the wrong Graph API version is used to request the node. Select the correct Version in the DefaultFacebookClient constructor:

new DefaultFacebookClient(accessToken, Version.VERSION_2_6);

Upvotes: 4

Related Questions