Facebook SDK 4 para Android – cómo cerrar sesión mediante programación
Recientemente, Facebook lanzó SDK 4 con actualizaciones nuevas y frescas. Intenté cambiar en SDK4 para usar nuevas características, sin embargo, estoy luchando con la característica de inicio de sesión de Facebook.
Hasta ahora, para cerrar sesión de Facebook mediante programación, he utilizado:
- AppInviteDialog no funciona en Android SDK de Facebook 4.0
- Facebook Android SDK 4.0: newGraphPathRequest devuelve "Un token de acceso activo debe utilizarse para consultar información sobre el usuario actual."
- Facebook SDK y compartir un enlace de la aplicación Play Store con el problema de ShareDialog
- Cómo inhabilitar el registro de eventos de Facebook SDK?
- Cómo cambiar la altura del botón 'Iniciar sesión con Facebook'?
Session session = Session.getActiveSession(); session.closeAndClearTokenInformation();
Pero SDK4 parece no dar soporte a Session ya, y en documentos oficiales, mencionan:
Hay dos maneras de implementar el inicio de sesión de Facebook en Android:
Clase LoginButton – que proporciona un botón que puede agregar a su interfaz de usuario. Sigue el token de acceso actual y puede registrar personas dentro y fuera.
Bueno, parece que no hay manera de salir de Facebook mediante programación, excepto con el uso de LoginButton. Cualquier persona tiene alguna idea, por favor comparta aquí.
- Utiliza ShareContent de Facebook sdk en la intención de acciones android
- Cómo analizar la siguiente página de Facebook (SDK 4.0) ¿Respuesta gráfica en android?
- El diálogo compartido de Android facebook 4.0.0 no comparte el contenido
- Facebook AppInviteContent: El SDK no se ha inicializado, asegúrese de llamar a FacebookSdk.sdkInitialize () primero
- Facebook SDK 4.0 LoginButton - setReadPermissions no funciona?
- El diálogo de la parte posterior del facebook de la identificación del poste vuelve siempre null en androide
- Error de Gradle después de incluir facebook sdk
- Login de Android Facebook "LoginActivity could not be started"
Puede utilizar LoginManager.getInstance().logOut();
, Incluso si utiliza LoginButton porque
Este elemento de interfaz de usuario envuelve la funcionalidad disponible en LoginManager.
EDIT: Sólo para mencionar que esto funciona para Facebook SDK v4 . No sé si lo cambiarán en el futuro.
@as batoutofhell mención, no se olvide de poner FacebookSdk.sdkInitialize(getApplicationContext());
Para inicializar el facebook sdk. Por favor vea aquí para los detalles.
SDK4, si desea desactualizar completamente, asegúrese de eliminar 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(); }
Puede utilizar LoginManager.logOut ()
Echa un vistazo a https://developers.facebook.com/docs/reference/android/current/class/LoginManager/
Para manejarlo con el 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(); } }); }
U puede cerrar sesión utilizando LoginManager pero u tiene que utilizar la solicitud de gráfico también. Estoy hablando de cerrar sesión completamente por lo que, la próxima vez que u puede iniciar sesión con 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();
Por la ayuda de las preferencias compartidas aquí u puede cerrar la sesión completamente. Y la próxima vez u puede cerrar sesión con otra cuenta.
- OnCreateOptionsMenu () no se llama en Fragmento
- Emulador: ERROR: emulación x86 requiere actualmente aceleración de hardware