android facebook facebook-sdk-4.0

Facebook SDK 4 para Android: cómo cerrar sesión mediante programación



facebook-sdk-4.0 (5)

Recientemente, Facebook lanzó SDK 4 con nuevas y geniales actualizaciones. Traté de cambiar al SDK4 para usar nuevas funciones, sin embargo, estoy luchando con la función de inicio de sesión de Facebook.

Hasta ahora, para cerrar sesión en Facebook mediante programación, utilicé:

Session session = Session.getActiveSession(); session.closeAndClearTokenInformation();

Pero SDK4 parece que ya no es compatible con Session, y en documentos oficiales, mencionan:

Hay dos formas de implementar el inicio de sesión de Facebook en Android:

Clase LoginButton: que proporciona un botón que puede agregar a su IU. Sigue el token de acceso actual y puede iniciar y cerrar sesión personas.

Bueno, parece que no hay forma de desconectarse de Facebook mediante programación, excepto usando LoginButton. Alguien tiene alguna idea, compártala aquí.


Para manejarlo con loginButton:

//Check if user is currently logged in if (AccessToken.getCurrentAccessToken() != null && com.facebook.Profile.getCurrentProfile() != null){ //Logged in so show the login button fbLogin.setVisibility(View.VISIBLE); fbLogin.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //log out LoginManager.getInstance().logOut(); gotoLogin(); } }); }


Puede cerrar sesión con LoginManager, pero también debe usar la solicitud de gráfico. Estoy hablando de cerrar sesión por completo para que la próxima vez pueda iniciar sesión con una cuenta diferente.

new GraphRequest(AccessToken.getCurrentAccessToken(), "/me/permissions/", null, HttpMethod.DELETE, new GraphRequest .Callback() { @Override public void onCompleted(GraphResponse graphResponse) { SharedPreferences pref = DashBoard.this.getPreferences(Context.MODE_PRIVATE); SharedPreferences.Editor editor = pref.edit(); editor.clear(); editor.commit(); LoginManager.getInstance().logOut(); Intent logoutint = new Intent(DashBoard.this,MainActivity.class); logoutint.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(logoutint); } }).executeAsync();

Con la ayuda de las preferencias compartidas aquí puede cerrar sesión por completo y la próxima vez puede iniciar sesión con una cuenta diferente.


Puede usar LoginManager.getInstance().logOut(); , incluso si usa LoginButton porque

Este elemento UI envuelve la funcionalidad disponible en el LoginManager.

EDITAR: Solo para mencionar que esto funciona para Facebook SDK v4 . No sé si lo cambiarán en el futuro.

@ Como mención de batoutofhell, no olvide poner FacebookSdk.sdkInitialize(getApplicationContext()); para inicializar el sdk de facebook. Por favor, vea here para más detalles.



SDK4, si desea desacoplar por completo, asegúrese de eliminar también la aplicación de la cuenta de Facebook del usuario. Este método desconecta completamente al usuario:

public void disconnectFromFacebook() { 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(); }