auth.statusChange não dispara durante o FB.init se o usuário não estiver logado no facebook
Gostaria de saber se alguém encontrou uma solução para o comportamento que estou experimentando.
Tomemos o exemplo do código abaixo:
<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 com status definido como true, essencialmente chamadasgetLoginStatus()
de acordo comdocumentação do facebook. No entanto, écomportamento aparentemente pretendido que isso vainão desencadear o eventoauth.statusChange
, porque o valor padrão é 'desconhecido',e o valor para 'não conectado' também é 'desconhecido' (embora possa ser conhecido !!)
Portanto, tive que fazer uma ligação paraFB.getLoginStatus()
explicitamenteassim como ter o status definido como verdadeiro se eu quiser também responder aos usuários que não estão conectados ao facebook.
O problema é que isso resulta na função sendo chamada duas vezes se o usuário for algo diferente de "desconectado".
Existe uma maneira legal de impedir que isso aconteça? Acho que minha única opção seria chamar uma função diferente para lidar com eventos de alteração de autenticação.