import javax.servlet.http.*; import java.io.IOException; import javax.servlet.*; import org.json.JSONException; import org.json.JSONObject; import java.io.PrintWriter; import com.facebook.api.*; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class SocialJavaTutorial extends HttpServlet { int count; //Application API Key and application secret from creating app in FB String appapikey = new String("7623a6ab94a7cc519b1fb73627afdda0"); String appsecret = new String("90e48- your secret here - df6d957e"); //Facebook loginPage to this application. Parameter canvas=true shows the result in Facebook canvas String loginPage = "http://www.facebook.com/login.php?api_key="+"00b0049fc7cf0d1e4a4ba2ea3e55b269"+"&v=1.0&canvas=true"; String profilePage = "http://www.facebook.com/profile.php"; FacebookJsonRestClient facebook; // the facebook client, talks to REST Server PrintWriter servletOutput; // output of servlet. HTML or FBML out public void doGet( HttpServletRequest req, HttpServletResponse res ) throws ServletException, IOException{ servletOutput = res.getWriter(); // response is sent to ServletOutput res.setContentType( "text/html" ); servletOutput.println("This is the doGet method"); } public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { servletOutput = res.getWriter(); // response is sent to ServletOutput res.setContentType( "text/html" ); // do authentication String user =null; String sessionKey=null; sessionKey = req.getParameter(FacebookParam.SESSION_KEY.toString()); // Session Key passed as request parameter if (sessionKey==null) { // If there is not session key, they user not logged in servletOutput.println(""); // Facebook Redirect to login page } else{ // user is logged on //get MockFBMLText from Profile as a parameter. If it exists, send it to servlet & skip the rest String mockfbmltext = req.getParameter("mockfbmltext"); if (mockfbmltext!=null){ servletOutput.println(mockfbmltext); }else{ // if MockFBMLText is set, don't do anything else facebook = new FacebookJsonRestClient(appapikey, appsecret,sessionKey); // create Facebook Json Rest Client try{ // Get user id as parameter user = req.getParameter("fb_sig_user"); // get user as a string. User info passed as request parameter Long userLong = new Long(user); // need user as a long for API calls // get profiletext as parameter, if not null, then display on profile, redirect to profile page String displayText = req.getParameter("profiletext"); if (displayText!=null){ facebook.profile_setFBML(displayText, userLong); servletOutput.println(""); // Facebook Redirect to login page }else{ // render rest of page if displayText is not a parameter // Display User ID servletOutput.println("User is " + user +"
"); // displays numeric value // use JDBC to store and update the count Connection con; Statement stmt; try { Class.forName("com.mysql.jdbc.Driver").newInstance(); } catch (Exception ex) { // handle the error servletOutput.println(ex +" error"); } try { con = DriverManager.getConnection("jdbc:mysql://HOST/DATABASE?" + "user=USER_NAME&password=PASSWORD"); String query; try { stmt = con.createStatement(); query ="Select count from counter"; //counter is the table that contains count ResultSet rs = stmt.executeQuery(query); if (rs.next()) { int count = rs.getInt("count"); count++; servletOutput.println("the count is " + count +"
"); query ="UPDATE counter SET count=" + count; //update count in Database stmt.executeUpdate(query); } else { // if it is the first time access stmt = con.createStatement(); query ="INSERT INTO counter (count) VALUES (1)"; stmt.executeUpdate(query); servletOutput.println("You are number 1"); } con.close(); } catch(SQLException ex) { servletOutput.println("SQLException: " + ex.getMessage()); } } catch (SQLException ex) { // handle any errors servletOutput.println("SQLException: " + ex.getMessage()); servletOutput.println("SQLState: " + ex.getSQLState()); servletOutput.println("VendorError: " + ex.getErrorCode()); } // Try FQL to get name String query = "SELECT name FROM user WHERE uid=" + user; org.json.JSONArray resultArray = (org.json.JSONArray)facebook.fql_query(query); try{ JSONObject result = resultArray.getJSONObject(0); servletOutput.println("User Name is " + result.getString("name")); servletOutput.println("
"); } catch(JSONException jex){ servletOutput.println(">Error: JSON " + jex ); } // Set up input form on canvas page servletOutput.println(""); servletOutput.println("
"); servletOutput.println("
"); servletOutput.println(""); servletOutput.println("
"); // Set up mockajax form on profile page String appCallBackUrl = "http://www.socialjava.com/servlet/SocialJavaTutorial/"; String mockAjax; mockAjax="
"; mockAjax+=""; mockAjax+="
"; mockAjax+=""; mockAjax+=""; mockAjax+="
"; facebook.profile_setFBML(mockAjax.toString(), userLong); } }//try catch( FacebookException ex ) { servletOutput.println(">Error: Couldn't talk to Facebook> " + ex ); } } //else user is logged in }//else mockajax servletOutput.close(); } // end doPost() }