auth.statusChange nie uruchamia się podczas FB.init, jeśli użytkownik nie jest zalogowany na Facebooku
Zastanawiałem się, czy ktoś znalazł obejście dla zachowania, którego doświadczam.
Weź przykład z poniższego kodu:
<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>
Używanie FB.init ze statusem ustawionym na true, zasadniczo wywołujegetLoginStatus()
wedługdokumentacja na Facebooku. Jednak tak jestnajwyraźniej zamierzone zachowanie to będzienie wywołać zdarzenieauth.statusChange
, ponieważ domyślna wartość to „nieznany”,i wartość „niezalogowany” jest również „nieznana” (chociaż może być znana!)
Dlatego musiałem zadzwonić doFB.getLoginStatus()
jawniejak również mając status ustawiony na true, jeśli chcę również odpowiedzieć użytkownikom, którzy nie są zalogowani na facebooku.
Problem polega na tym, że funkcja jest wywoływana dwukrotnie, jeśli użytkownik jest czymś innym niż „wylogowany”.
Czy istnieje dobry sposób na powstrzymanie tego zjawiska? Myślę, że moją jedyną opcją może być wywołanie innej funkcji do obsługi zdarzeń zmiany autoryzacji ..