package com.gathr.gathr; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.support.v4.app.Fragment; import android.widget.Toast; import com.facebook.Session; import com.facebook.SessionState; import com.facebook.UiLifecycleHelper; import com.facebook.model.GraphUser; import com.facebook.widget.LoginButton; import org.json.JSONArray; import org.json.JSONException; import java.util.Arrays; public class MainFragment extends Fragment{ String results; String id; @Override public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) { View view = inflater.inflate(R.layout.activity_main, container, false); // Find the user's profile picture custom view LoginButton authButton = (LoginButton)view.findViewById(R.id.authButton); authButton.setFragment(this); authButton.setReadPermissions(Arrays.asList("user_about_me","email","user_birthday","user_friends")); authButton.setUserInfoChangedCallback(new LoginButton.UserInfoChangedCallback() { @Override public void onUserInfoFetched(GraphUser user) { if (user != null) { String user_fid = user.getId(); String user_email = user.asMap().get("email").toString(); String user_gender = user.getProperty("gender").toString(); String user_fname = user.getFirstName(); String user_lname = user.getLastName(); String user_dob = user.getBirthday(); QueryDB DBconn = new QueryDB(getActivity(), user_fid); try { DBconn.executeQuery("INSERT USER('" + user_fid + "', '" + user_email + "', '" + user_fname + "', '" + user_lname + "', '" + user_dob + "', '" + user_gender + "')"); results = DBconn.getResults(); AuthUser.user_id = results; AuthUser.fb_id = user_fid; AuthUser.user_fname = user_fname; AuthUser.user_lname = user_lname; SharedPreferences settings = getActivity().getSharedPreferences("AuthUser", 0); SharedPreferences.Editor editor = settings.edit(); editor.putString("userid", AuthUser.user_id); editor.putString("fbid", AuthUser.fb_id); editor.putString("fname", AuthUser.user_fname); editor.putString("lname", AuthUser.user_lname); editor.commit(); }catch(GathrException e){ Log.i("Exception", e.error); } Intent i = new Intent(getActivity().getApplicationContext(), MapsActivity.class); startActivity(i); } } }); Session.getActiveSession().getPermissions(); return view; } private void onSessionStateChange(Session session, SessionState state, Exception exception) { if (state.isOpened()) { Toast.makeText(super.getActivity(), "Logging in, Please Wait!", Toast.LENGTH_SHORT).show(); } else if (state.isClosed()) { Toast.makeText(super.getActivity(), "Successfully Logged Out!", Toast.LENGTH_SHORT).show(); } } private Session.StatusCallback callback = new Session.StatusCallback() { private void onClickLogin() { Session session = Session.getActiveSession(); if (!session.isOpened() && !session.isClosed()) { session.openForRead(new Session.OpenRequest(getActivity()) .setPermissions(Arrays.asList("user_about_me","email","user_birthday","user_friends")) .setCallback(callback)); } else { Session.openActiveSession(getActivity(),true,callback); } } @Override public void call(Session session, SessionState state, Exception exception) { onSessionStateChange(session, state, exception); // For scenarios where the main activity is launched and user // session is not null, the session state change notification // may not be triggered. Trigger it if it's open/closed. //Session session = Session.getActiveSession(); if (session != null && (session.isOpened() || session.isClosed()) ) { onSessionStateChange(session, session.getState(), null); } uiHelper.onResume(); } }; private UiLifecycleHelper uiHelper; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); uiHelper = new UiLifecycleHelper(getActivity(), callback); uiHelper.onCreate(savedInstanceState); } @Override public void onResume() { super.onResume(); uiHelper.onResume(); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); uiHelper.onActivityResult(requestCode, resultCode, data); } @Override public void onPause() { super.onPause(); uiHelper.onPause(); } @Override public void onDestroy() { super.onDestroy(); uiHelper.onDestroy(); } @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); uiHelper.onSaveInstanceState(outState); } }