ボタンクリックイベントから、FacebookJSSDKのFB.getLoginStatusを呼び出しています。私の問題は、ステータスパラメータがtrueに設定されている場合、ブラウザのポップアップブロッカーがトリガーされ、ログインダイアログが表示されないことです。ただし、ステータスがfalseの場合、ポップアップブロッカーがトリガーされません。ユーザーがページを更新せずにFacebookにログインしているかどうかをサイトが知る必要があるので、ステータスをtrueにする必要があります。Falseパラメータ値は、FBがキャッシュされたログインステータスを取得することを意味します。これは、ユーザーがサイトにいる間にFacebookからログアウトした場合に間違っている可能性があります。
どうすればこれを回避できますか?
ここに問題を説明するいくつかのコードがあります
$('.my-button').click(function () {
FB.getLoginStatus(function (response) {
if (response.status != 'connected') {
FB.login(function (r) {
if (r.status == 'connected') {
alert('logged in');
}
});
}
}, true);
});