G.Morreale
Introduction:
This article explain the facebook java api through an example.
First you need a facebook account, and you have to enable "Developer" application.
Then you must configure you account and make a new application configuration in order to obtain
"api key" and "secret key".
This can be accomplished by reading http://developers.facebook.com/get_started.php
The Server
You need a java web server (tomcat, glassfish, jboss etc.) available by the web.
Localhost server isn't ok to facebook integration purpose.
Facebook Java Api
If you want to interact with facebook platform a client library can be very useful.
Client library are available in different languages:http://wiki.developers.facebook.com/index.php/Client_Libraries
There isn't a officiale Java api but you can choose alternative unofficial ones:
I prefer the last one.
So go to http://code.google.com/p/facebook-java-api/ and download facebook-java-api-2.0.4.bin.zip (or later).
When you download it, extract the jar into a directory and get it available in you facebook example application classpath.
Facebook server make available user data, photos, groups infos etc by rest api:http://wiki.developers.facebook.com/index.php/API
The Facebook Client Project
Make a new Web project, and make a new empty servlet.
The servlet url-pattern configured in web.xml must be the same indicated in facebook application configuration.
The Source Code
public class index extends HttpServlet
{
//facebook give it!
String apiKey = "your api key";
String secretKey = "your secret key";
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try
{
out.println("<h2>User information</h2>");
//facebook login mechanism give you by http parameter the session key
//needed for client api request.
String sessionKey = request.getParameter(FacebookParam.SESSION_KEY.toString());
//initialize a facebook xml client (you can choose different client version: xml, jaxb or json)
//the init is done by apiKey, secretKey and session key previosly requested
FacebookXmlRestClient client = new FacebookXmlRestClient(apiKey, secretKey, sessionKey);
//This code line obtain the user logged id
Long uid = client.users_getLoggedInUser();
//print user info.
out.println(printUserInfo(uid, client, sessionKey));
}
private String printUserInfo(Long uid, FacebookXmlRestClient client, String sessionKey) throws FacebookException { StringBuffer ret = new StringBuffer(); //init array parameter ArrayList<Long> uids = new ArrayList<Long>(1); uids.add(uid); //init field parameter - we choose all profile infos. List<ProfileField> fields = Arrays.asList(ProfileField.values());
//init the client in order to make the xml request client = new FacebookXmlRestClient(apiKey, secretKey, sessionKey); //get the xml document containing the infos Document userInfoDoc = client.users_getInfo(uids, fields);
//for each info append it to returned string buffer for (ProfileField pfield : fields) { ret.append(pfield.fieldName()).append(" <b>").append(userInfoDoc.getElementsByTagName(pfield.fieldName()). item(0).getTextContent()).append("</b>"); ret.append("</br>"); } return ret.toString(); }
Conclusion
In this simple manner you can print all logged facebook user info into facebook application.
In order to make a cleary client authentication by using java servlet filter you can read this:
http://www.theliveweb.net/blog/2007/10/31/facebook-authentication-using-java/
No comments:
Post a Comment