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 < 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