Cómo funciona el cierre de sesión en Facebook SDK Android

Estoy un poco confundido acerca de cómo funciona facebook.logout (contexto).

Porque incluso después de llamar a cerrar sesión, puedo obtener acceso a información que requiere un auth_token. Entonces, ¿cómo es eso posible? Me encontré con este tema, que me dejó un poco confundido: https://stackoverflow.com/a/6597688/487940

Después de leer esa respuesta, esta es mi pregunta: así que si el usuario concede acceso a [mi] aplicación, siempre será autenticado si está conectado a la aplicación [official] facebook. Incluso si intento llamar a facebook.logout (contexto) en [mi] aplicación, él se conectará y mi aplicación podrá hacer llamadas a Facebook API? '

Lo siento, no puedo entender este comportamiento.

ACTUALIZACIÓN: Después de leer la respuesta de Torid, estoy confundido acerca de la función facebook.logout (). ¿Cuál es el propósito de esta función si no registra al usuario? Porque, no veo el propósito de llamar a este propósito más. No registra el usuario.

Hay dos cosas independientes sucediendo aquí: 1) si su usuario ha autenticado su aplicación (con permisos) a Facebook y 2) si su usuario está conectado a Facebook.

La autenticación se requiere la primera vez que el usuario usa la aplicación y dura hasta que el usuario se desautorea de forma explícita (por ejemplo, a través de la configuración de la cuenta web de Facebook -> Aplicaciones -> Configuración de la aplicación).

El inicio de sesión puede ser necesario cada vez que el usuario inicie su aplicación. Pero si utiliza el SDK predeterminado authorize (), que intenta hacer un Single Sign On (SSO), donde si la aplicación de Facebook está conectada, su aplicación se inicia sesión automáticamente y utiliza el token de acceso existente.

Si estás usando SSO, cuando haces un logout, eso no tiene ningún efecto, ya que un logout real tendría que cerrar la sesión en la aplicación de Facebook, que quizá el usuario no quiera.

Puede evitar este comportamiento haciendo una autorización del formulario

authorize(this, PERMISSIONS, FORCE_DIALOG_AUTH, new LoginDialogListener()); 

Que evita SSO y fuerza un inicio de sesión de diálogo. Por supuesto, eso obliga a su usuario a iniciar sesión cada vez que inicie su aplicación, a menos que guarde los datos de acceso / token de acceso bajo las cubiertas (que es lo que hace el SDK, consulte la fuente).

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.