私が経験している動作の回避策を誰かが見つけたのではないかと思いました。
以下のコードの例を見てください。
<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>
status を true に設定して FB.init を使用すると、基本的にFacebook のドキュメントgetLoginStatus()
に従って呼び出します。ただし、デフォルト値が「不明」であり、「ログインしていない」の値も「不明」であるため、これがイベントをトリガーしないことは明らかに意図された動作です(たとえそれが知られている可能性があっても!!)auth.statusChange
したがって、Facebook にログインしていないユーザーにも応答したい場合は、FB.getLoginStatus()
明示的に呼び出し、ステータスを true に設定する必要がありました。
問題は、ユーザーが「ログアウト」以外の場合、関数が 2 回呼び出されることです。
これを止めるきちんとした方法はありますか?私の唯一のオプションは、認証変更イベントを処理するために別の関数を呼び出すことだと思います..