I just got started with Facebook (graph) API and fetch data from native Java programs for my project requirements .First of all I created an sample app at http://developers.facebook.com/ and got the necessary details about the app at the summery.
Once I registered the app it was time to give permission from my user account to the app so that it can access ( so the API ) data from my account.
https://www.facebook.com/dialog/oauth? client_id=MY_APP_ID&redirect_uri=MY_URL
MY_URL was any random url as the landing page after I log in was immaterial in this case as I was going to use the APIs from the java code.
https://www.facebook.com/dialog/oauth? client_id=YOUR_APP_ID&redirect_uri=YOUR_URL&scope=email,read_str,offline_access
I addded offline_access so that it does not time out , I can use the access token generated forever.
Now after I allowed access it landed on a page similar to the following
http://YOUR_URL?code=A_CODE_GENERATED_BY_SERVER
To get the access_token I invoked following
https://graph.facebook.com/oauth/access_token? client_id=<MY_APP_ID>&redirect_uri=YOUR_URL& client_secret=YOUR_APP_SECRET&code=THE_CODE_FROM_ABOVE
once the access token appeared in the response I invoked various graph APIs to test if data is coming in JSON format
https://graph.facebook.com/me?access_token=<Access_token_obtained_from_last_step>
gives me all my wall posts
https://graph.facebook.com/<POST_ID>?access_token=<Access_token_obtained_from_last_step>
gives me all the comments for a given post id of mine
I also used json-simple to parse and decode the JSON returned by the above Facebook APIs.
/*FindComments.java*/import java.io.BufferedReader;import java.io.IOException; import java.io.InputStreamReader; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import org.json.simple.JSONArray; import org.json.simple.JSONObject; import org.json.simple.JSONValue; public class FindComments { /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { String commentID = "<COMMEN_ID>"; String accessToken = "<ACCESS_TOKEN>"; // TODO Auto-generated method stub URL yahoo = new URL( "https://graph.facebook.com/"+commentID+"?access_token="+accessToken); URLConnection yc = yahoo.openConnection(); BufferedReader in = new BufferedReader(new InputStreamReader(yc .getInputStream())); String inputLine; String s = ""; while ((inputLine = in.readLine()) != null) // System.out.println(inputLine); s = s + inputLine + "n"; in.close(); // System.out.println(s); Object obj = JSONValue.parse(s); // JSONArray array=(JSONArray)obj; // System.out.println(obj); // System.out.println(array.get(1)); JSONObject obj2 = (JSONObject) obj; JSONObject comments = (JSONObject) obj2.get("comments"); JSONArray commentsArray = (JSONArray) comments.get("data"); // System.out.println(commentsArray.size()); // System.out.println(obj2.get("comments")); for (int i = 0; i < commentsArray.size(); i++) { JSONObject commentobj = (JSONObject) commentsArray.get(i); // System.out.println(commentobj); String commentText = (String) commentobj.get("message"); System.out.println(commentText); } } }
The above code prints the comments given on the Hard coded post ID

6 comments
1 ping
Skip to comment form ↓
JESSE DZIEDZIC
October 20, 2011 at 11:05 am (UTC 5.5) Link to this comment
This makes great sense to me!
???? ??????
November 12, 2011 at 6:09 pm (UTC 5.5) Link to this comment
May be your best read I have read!!
SMita
November 22, 2011 at 2:32 am (UTC 5.5) Link to this comment
Hi,
I have one question on this implementation. Facebook opens a new browser window to generate the access token. I am trying to avoid that. Is there any way i can get the access token but does not get a new window opened. Any help will be appreciated.
Thanks,
Smita
Neil
November 29, 2011 at 3:39 pm (UTC 5.5) Link to this comment
Hi Smita,
I am sorry , it has been a while I have worked on Facebook APIs. Could you please post your query at http://forum.developers.facebook.net/ ? I am sure many experts will be able to answer. If you don’t get , let me know I can look up for you .
Thanks
Neil
networking social networking
November 28, 2011 at 7:01 pm (UTC 5.5) Link to this comment
Considerably well written blog post.
Nilesh
February 20, 2012 at 11:10 am (UTC 5.5) Link to this comment
Hi Neil.
This is a great blog. I have 2 requirements –
(1) Retrieve comments from the facebook users Feed post
(2) And post comments on the facebook users Feed post
While my first point can be achieved by following your blog. Can u gimme some guidelines on my second point?
Thanks in Advance.
Regards,
Nilesh
Saji Sharma
September 18, 2012 at 9:18 am (UTC 5.5) Link to this comment
Oh great post.Thanks for sharing.
<a href="http://www.quick2host.com/web-hosting/">Web Hosting India</a>.