package com.theqsync.page;
import java.util.ArrayList;
import java.util.List;
import java.util.Vector;
import javax.faces.component.UIForm;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.json.JSONArray;
import org.json.JSONObject;
import org.w3c.dom.Document;
import com.google.code.facebookapi.FacebookException;
import com.google.code.facebookapi.FacebookJsonRestClient;
import com.google.code.facebookapi.FacebookXmlRestClient;
import com.google.code.facebookapi.IFacebookRestClient;
import com.theqsync.bean.FacebookBean;
import com.theqsync.dao.entity.FacebookContact;
import com.theqsync.resource.util.AbstractPage;
import com.theqsync.resource.util.FacebookUtil;
public class FacebookPage extends AbstractPage {
private static final long serialVersionUID = 1L;
public FacebookPage() {
if (!isPostBack()) {
try {
HttpServletRequest request = getRequest();
HttpSession session = request.getSession(true);
String sessionKey = (String) session
.getAttribute(FacebookUtil.SESSION_KEY);
FacebookJsonRestClient client = new FacebookJsonRestClient(
FacebookUtil.API_KEY, FacebookUtil.SECRET_KEY,
sessionKey);
FacebookContact facebookUser = null;
Long uid = client.users_getLoggedInUser();
if (uid != null) {
facebookUser = new FacebookContact();
facebookUser.setUserId(uid);
/*
* json ile
*/
Vector<Long> userIds = new Vector<Long>();
/*
* Kendi Bilgilerinide alcaz
*/
userIds.add(uid);
/*
* Kullan�c� Arkadas idlerini alcaz
*/
JSONArray friendsId = client.friends_get();
for (int i = 0; i < friendsId.length(); i++) {
Long obje = friendsId.getLong(i);
userIds.add(obje);
}
/*
* Ki�i bilgilerini al
*/
JSONArray friendsDetail = client.users_getInfo(userIds,
FacebookUtil.fields);
List<FacebookContact> contacts = new ArrayList<FacebookContact>();
for (int i = 0; i < friendsDetail.length(); i++) {
JSONObject obje = friendsDetail.getJSONObject(i);
FacebookContact contact = new FacebookContact();
contact.createFromJSONObject(obje);
contacts.add(contact);
}
FacebookBean iBean = (FacebookBean) getBean("facebookBean");
iBean.setFacebookContacts(contacts);
} else {
error("Facebook Login Failed");
}
} catch (FacebookException e) {
if (e.toString().indexOf("not authorized") > 0
|| e.toString().indexOf("session has been invalidated") > 0) {
HttpServletRequest request = getRequest();
HttpSession session = request.getSession();
IFacebookRestClient<Document> userClient = FacebookUtil
.getUserClient(session);
if (userClient == null) {
userClient = new FacebookXmlRestClient(
FacebookUtil.API_KEY, FacebookUtil.SECRET_KEY);
session.setAttribute(FacebookUtil.FACEBOOK_USER_CLIENT,
userClient);
}
navigate(FacebookUtil.LOGIN_URL);
} else {
error(e);
}
} catch (Exception e) {
error(e);
}
}
}
private UIForm form;
public UIForm getForm() {
return form;
}
public void setForm(UIForm form) {
this.form = form;
}
}