auth.statusChange не срабатывает во время FB.init, если пользователь не вошел в Facebook
Я задавался вопросом, нашел ли кто-нибудь обходной путь к поведению, которое я испытываю.
Возьмите пример кода ниже:
<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>
Использование FB.init со статусом true, по сути, вызываетgetLoginStatus()
в соответствии сдокументация в фейсбуке, Тем не менее, этоочевидно, предполагаемое поведение что это будетnot вызвать событиеauth.statusChange
потому что значением по умолчанию является «неизвестный»,and значение для "не вошло в систему" также является «неизвестным»; (хотя это может быть известно !!)
Поэтому мне пришлось позвонитьFB.getLoginStatus()
эксплицитноas well as со статусом true, если я хочу также отвечать пользователям, которые не вошли в Facebook.
Проблема заключается в том, что это приводит к тому, что функция вызывается дважды, если пользователь что-то отличает от «выхода из системы».
Есть ли хороший способ остановить это? Я думаю, что моя единственная возможность - вызвать другую функцию для обработки событий изменения аутентификации.