Me pregunto si alguien ha encontrado una solución al comportamiento que estoy experimentando.auth.statusChange no se activa durante FB.init si el usuario no ha iniciado sesión en Facebook
Tomemos el ejemplo del código de abajo:
<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 se establece en true, las llamadas esencialmente getLoginStatus()
según la facebook documentation. Sin embargo, es apparently intended behaviour que esto no activa el evento auth.statusChange
, porque el valor predeterminado es 'desconocido', y el valor para 'no conectado' también es 'desconocido' (aunque puede conocerse !!)
por lo tanto he tenido que hacer una llamada a FB.getLoginStatus()
explícitamente , así como tengan la condición establecida en true si quiero responder también a los usuarios que no estén conectados a Facebook.
El problema es que esto provoca que la función se llame dos veces si el usuario no está "desconectado".
¿Hay alguna manera de evitar que esto suceda? Creo que mi única opción podría ser la de llamar a una función diferente para manejar los eventos de cambio de autenticación ..
raro - este error parece haberse eliminado. todo esto es un desastre No tengo ni idea de cuándo 'status: true' es realmente útil. dicen: 'Si establece el estado en verdadero en el FB.llamada init(), el SDK intentará obtener información sobre el usuario actual inmediatamente después de la inicialización. Hacer esto puede reducir el tiempo que se tarda en verificar el estado de un usuario conectado si usa el inicio de sesión de Facebook, pero no es útil para páginas que solo tienen complementos sociales. ' Entonces, ¿esto significa que la respuesta está en la memoria caché? –