Cómo evitar mostrar el diálogo ya autorizado en la aplicación en Android Facebook SDK
Estoy recibiendo una página completamente inútil cuando utilizo el inicio de sesión único para el SDK de Android de Facebook.
- Facebook Android API y Twitter Webview Login integración
- Inicie sesión una vez y omita la configuración de inicio de sesión cada vez que se inicia la aplicación después del primer inicio de sesión
- Iniciar sesión con el SDK de Android de Facebook y Proguard
- Facebook SDK 3 EOFException
- No se puede ejecutar dex: varios archivos dex definen Lcom / facebook / android / AsyncFacebookRunner $ 1;
"You have already authorized app. Press "Okay" to continue.
Esta página destruiría la experiencia del usuario. ¿Cómo puedo eliminar esta pantalla?
Gracias por adelantado.
Nota: no veremos este problema si la aplicación FB está instalada en el dispositivo. Sólo se publicará si la aplicación FB no está disponible en el dispositivo.
- SDK de Facebook para Android duplicar la biblioteca de soporte en las dependencias
- Android: Facebook obtiene "Token de acceso de usuario", al acceder con éxito
- Refrescar los permisos de token en Facebook Android SDK
- Facebook android sdk v4 inicio de sesión cancelar
- Generación de hash de claves de liberación en Linux OS (Ubuntu): Android Facebook SDK
- Cómo eliminar la foto cargada de la pared de facebook de la aplicación
- Android: Facebook 3.0 Publicar en la pared de los amigos usando la respuesta de solicitud de FQL (A partir de Apr23,2013)
- Android FB API 3.0 - establecer permisos sólo una vez
Estoy usando el último Facebook SDK 3.6
Creo y he probado hasta ahora en HTC One y Galaxy s3 mini . Esta página no se muestra para mí en ningún momento. He seguido la guía de API aquí …
https://developers.facebook.com/docs/facebook-login
Aquí está el código aswell … quizás esto puede ayudar.
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); } }
Antes de usar este código para salir de 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();
Después de haber sido cambiado a este código LoginManager.getInstance().logOut();
Resolvió el problema.