How to avoid showing the dialogue already allowed for the application in the Android Facebook SDK

enter image description here

I get a completely useless page when I use Single Sign on for Android Android SDK.

"You have already authorized app. Press "Okay" to continue. 

This page will destroy the user interface. How to remove this screen?

Thanks in advance.

Note. We will not see this problem. If the FB application is installed on the device. It will be raised only if the FB application is not available on the device.

+8
android facebook-graph-api facebook-android-sdk
source share
2 answers

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); } } 
+1
source share

Before using this code to access Facebook:

 if (AccessToken.getCurrentAccessToken() == null) { return; // already logged out } new GraphRequest(AccessToken.getCurrentAccessToken(), "/me/permissions/", null, HttpMethod.DELETE, new GraphRequest .Callback() { @Override public void onCompleted(GraphResponse graphResponse) { LoginManager.getInstance().logOut(); } }).executeAsync(); 

After changing this code LoginManager.getInstance().logOut(); solved the problem.

+1
source share

All Articles