package alm.motiv.AlmendeMotivator.facebook; import alm.motiv.AlmendeMotivator.misc.CustomCallback; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.util.Log; import android.widget.Toast; import com.facebook.Request; import com.facebook.Response; import com.facebook.Session; import com.facebook.SessionState; import com.facebook.model.GraphObject; import com.facebook.model.GraphUser; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.util.ArrayList; import java.util.List; /** * FacebookManager controls connection with Facebook and gets requests from Facebook * * @author Thijs */ public class FacebookManager { /** * Fields */ private final String ME_HOME_PREFIX = "/me/home"; private final String GET_ME_HOME = "message, from, link, likes, comments.limit(1).summary(true), created_time, id"; private final Activity activity; private Session session; private final SharedPreferences sharedPreferences; /** * Constructor * * @param activity */ public FacebookManager(Activity activity) { this.activity = activity; sharedPreferences = activity.getSharedPreferences("facebookManager", Context.MODE_PRIVATE); } /** * check if is logged in */ public boolean isLoggedIn() { session = Session.getActiveSession(); if (session != null) { if (session.getState() == SessionState.OPENED) { return true; } } return false; } public static void logout() { Session.getActiveSession().closeAndClearTokenInformation(); } public boolean isSessionChanged() { session = Session.getActiveSession(); if (session != null && session.isOpened()) { long lastExpirationDateInMillis = sharedPreferences.getLong("lastExpirationdate", 0); if (lastExpirationDateInMillis != 0) { if (lastExpirationDateInMillis == session.getExpirationDate().getTime()) { return false; } } SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putLong("lastExpirationdate", session.getExpirationDate().getTime()); editor.commit(); return true; } return false; } public static void getFriendsOfUser(final CustomCallback callback) { Request.executeMyFriendsRequestAsync(Session.getActiveSession(), new Request.GraphUserListCallback() { @Override public void onCompleted(List<GraphUser> users, Response response) { // TODO Auto-generated method stub if (response.getError() == null) { callback.callback(users); } } }); } /* *//** * Get timeline posts Async from the Logged in User *//* public void getTimelineUserAsync(final CrCallBack completionCallback, final CrCallBack failCallback) { Session.openActiveSession(activity, false, new Session.StatusCallback() { // callback when session changes state @Override public void call(Session session, SessionState state, Exception exception) { if (state.isOpened()) { // to the /me API Bundle params = new Bundle(); params.putString("scope", "read_stream"); params.putString("fields", GET_ME_HOME); // params.putString("limit", "20"); Request request = Request.newGraphPathRequest(session, ME_HOME_PREFIX, new Request.Callback() { @Override public void onCompleted(Response response) { GraphObject object = response.getGraphObject(); ArrayList<SocialMediaFeed> facebookFeeds = new ArrayList<SocialMediaFeed>(); try { if (object != null) { JSONObject jsonobject = object.getInnerJSONObject(); JSONArray data_array = jsonobject .getJSONArray("data"); for (int i = 0; i < data_array.length(); i++) { SocialMediaFeed feed = new SocialMediaFeed(data_array.getJSONObject(i)); if (!feed.getContent().equals("")) { facebookFeeds.add(feed); } } setFacebookFeeds(facebookFeeds); } } catch (JSONException e) { //e.printStackTrace(); } if (facebookFeeds.size() != 0) { completionCallback.callback(facebookFeeds); }else{ failCallback.callback(null); } } }); request.setParameters(params); request.executeAsync(); }else{ failCallback.callback(null); } } }); }*/ }