I use the latest Facebook SDK 3.6 , I believe, and have so far tested on HTC One and Galaxy s3 mini. This page is not displayed to me at any time. I followed the API guide here ...
https://developers.facebook.com/docs/facebook-login
Here is the code ... maybe this can help.
public class LoginHandlerFrag extends Fragment { private UiLifecycleHelper uiHelper; private static final String TAG = "HomeFragment"; // private ProfilePictureView profilePictureView; private Session.StatusCallback callback = new Session.StatusCallback() { @Override public void call(Session session, SessionState state, Exception exception) { onSessionStateChange(session, state, exception); } }; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_login, container, false); LoginButton authButton = (LoginButton) view .findViewById(R.id.authButton); authButton.setReadPermissions(Arrays.asList("email", "user_location", "user_birthday", "user_likes", "user_photos")); authButton.setFragment(this); Settings.addLoggingBehavior(LoggingBehavior.INCLUDE_ACCESS_TOKENS); return view; } private void makeMeRequest(final Session session) { // Make an API call to get user data and define a // new callback to handle the response. Request request = Request.newMeRequest(session, new Request.GraphUserCallback() { @Override public void onCompleted(GraphUser user, Response response) { // If the response is successful if (session == Session.getActiveSession()) { if (user != null) { // profilePictureView.setProfileId(user.getId()); } } if (response.getError() != null) { // Handle errors, will do so later. } } }); request.executeAsync(); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); uiHelper = new UiLifecycleHelper(getActivity(), callback); uiHelper.onCreate(savedInstanceState); } private void onSessionStateChange(Session session, SessionState state, Exception exception) { session = Session.getActiveSession(); SharedPreferences storedPrefs = PreferenceManager .getDefaultSharedPreferences(getActivity().getApplicationContext()); SharedPreferences.Editor editor = storedPrefs.edit(); editor.putBoolean("userLoggedTracker", true); editor.commit(); if (state.isOpened()) { Log.i(TAG, "Logged in..."); makeMeRequest(session); editor.putBoolean("userLoggedTracker", false); editor.commit(); getView().setVisibility(View.GONE); } else if (state.isClosed()) { Log.i(TAG, "Logged out..."); editor.putBoolean("userLoggedTracker", true); editor.commit(); getView().setVisibility(View.VISIBLE); } } @Override public void onResume() { super.onResume(); Session session = Session.getActiveSession(); if (session != null && (session.isOpened() || session.isClosed())) { onSessionStateChange(session, session.getState(), null); } 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); } }
Jesson atherton
source share