auth.statusChange no se activa durante FB.init si el usuario no ha iniciado sesión en Facebook

Me pregunté si alguien ha encontrado una solución al comportamiento que estoy experimentando.

Tomemos el ejemplo del siguiente código:

<script>
window.fbAsyncInit = function() {
        FB.init({
          appId      : '[----removed-------]', // App ID
          channelUrl : 'http://localhost/channel.html', // Channel File
          status     : true, // check login status
          cookie     : true, // enable cookies
          xfbml      : true  // parse XFBML
        });     
        // Additional initialization code here

        FB.Event.subscribe('auth.statusChange',fbLoginStatus);

        console.log("getloginstatus");

        FB.getLoginStatus(fbLoginStatus);
</script>

Usando FB.init con el estado establecido en verdadero, esencialmente llamadasgetLoginStatus() de acuerdo con ladocumentación de facebook. Sin embargo lo éscomportamiento aparentemente intencionado que esta voluntadno desencadenar el eventoauth.statusChange, porque el valor por defecto es 'desconocido',y el valor de 'no iniciado sesión' también es 'desconocido' (¡aunque se puede conocer!)

Por eso he tenido que hacer una llamada aFB.getLoginStatus() explícitamentetanto como tener el estado establecido en verdadero si también quiero responder a los usuarios que no han iniciado sesión en Facebook.

El problema es que esto hace que se llame a la función dos veces si el usuario no es "desconectado".

¿Hay alguna manera de evitar que esto suceda? Creo que mi única opción podría ser llamar a una función diferente para manejar eventos de cambio de autenticación ...

Respuestas a la pregunta(3)

Su respuesta a la pregunta