/** * */ package com.personalityextractor.data.source; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.URL; import java.net.URLConnection; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import net.sf.json.JSONSerializer; /** * @author semanticvoid * */ public class Facebook { private String id = null; private String accessToken = null; public Facebook(String accessToken) { this.accessToken = accessToken; this.id = getUserId(); } private String getData(String urlStr) { try { URL url = new URL(urlStr); URLConnection yc = url.openConnection(); BufferedReader in = new BufferedReader(new InputStreamReader( yc.getInputStream())); String inputLine; StringBuffer buf = new StringBuffer(); while ((inputLine = in.readLine()) != null) { buf.append(inputLine); } in.close(); return buf.toString(); } catch (Exception e) { e.printStackTrace(); } return null; } private String getUserId() { String url = "https://graph.facebook.com/me?access_token=" + accessToken; String response = getData(url); if (response != null) { JSONObject jsonObj = (JSONObject) JSONSerializer.toJSON(response); if (jsonObj != null && jsonObj.containsKey("id")) { return jsonObj.getString("id"); } } return null; } public List<String> getUserStatusUpdates() { List<String> posts = new ArrayList<String>(); String url = "https://graph.facebook.com/me/feed?access_token=" + accessToken; for(int i=0; i<10; i++) { String response = getData(url); if (response != null) { JSONObject jsonObj = (JSONObject) JSONSerializer.toJSON(response); if(jsonObj.containsKey("paging")) { JSONObject paging = jsonObj.getJSONObject("paging"); if(paging.containsKey("next")) { url = paging.getString("next"); } } if(jsonObj.containsKey("data")) { JSONArray feedsArray = jsonObj.getJSONArray("data"); Iterator<JSONObject> itr = feedsArray.iterator(); while (itr.hasNext()) { JSONObject post = itr.next(); if (post.containsKey("message") && post.containsKey("from") && post.getJSONObject("from").getString("id") .equals(id)) { posts.add(post.getString("message")); } } } } if(url == null) { break; } } return posts; } public List<HashMap<String, String>> getLikes() { List<HashMap<String, String>> likes = new ArrayList<HashMap<String,String>>(); String url = "https://graph.facebook.com/me/likes?access_token=" + accessToken; String nextUrl = null; for(int i=0; i<10; i++) { String response = getData(url); if (response != null) { JSONObject jsonObj = (JSONObject) JSONSerializer.toJSON(response); if(jsonObj.containsKey("paging")) { JSONObject paging = jsonObj.getJSONObject("paging"); if(paging.containsKey("next")) { nextUrl = paging.getString("next"); } } if(jsonObj.containsKey("data")) { JSONArray likesArray = jsonObj.getJSONArray("data"); Iterator<JSONObject> itr = likesArray.iterator(); while (itr.hasNext()) { JSONObject like = itr.next(); HashMap<String, String> likeMap = new HashMap<String, String>(); likeMap.put("name", like.getString("name")); likeMap.put("category", like.getString("category")); likes.add(likeMap); } } } if(nextUrl == null) { break; } else { url = nextUrl; nextUrl = null; } } return likes; } /** * @param args */ public static void main(String[] args) { Facebook fb = new Facebook( "AAAAAAITEghMBABm6TMVqCgkvXYcWpZCgKsciSZC3tBAfPKCetbDIBBU5VK9LL6ZAZCliHIiTuajmYxZBh0OZCDLaMCxe8orZBjJkfP7LBg29QZDZD"); // List<String> posts = fb.getUserStatusUpdates(); // for(String p : posts) { // System.out.println(p); // } List<HashMap<String, String>> likes = fb.getLikes(); for(HashMap<String, String> l : likes) { System.out.println(l.get("name") + "\t" + l.get("category")); } } }