«

»

Feb 26

Facebook API from Java code

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 &lt; 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

  1. JESSE DZIEDZIC

    This makes great sense to me!

  2. ???? ??????

    May be your best read I have read!!

  3. SMita

    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

    1. Neil

      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

  4. networking social networking

    Considerably well written blog post.

  5. Nilesh

    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

  6. Saji Sharma

    Oh great post.Thanks for sharing.
    <a href="http://www.quick2host.com/web-hosting/">Web Hosting India</a>.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Plugin from the creators of Brindes Personalizados :: More at Plulz Wordpress Plugins