「login_event」へのこのサブスクリプションは、認証プロセスが十分に進行した後にのみ戻ってくることがわかりました。そのため、低速の 2G 接続で「Waiting for Facebook」を表示するローディング モーダルを表示するようなことをしようとしている場合、これはあまり役に立ちません。また、Dave が述べたように、Facebook は iframe 内にボタンを表示しているため、そのイベント リスナーを作成することはできません。
ただし、ドキュメントの外では、Facebook がウィンドウ メッセージバスを広範囲に使用して iframe と通信していることがわかります。
window.addEventListener("message", receiveMessage, false);
function receiveMessage(event){
if(event.data.indexOf('_FB_') === 0){// these are facebook messages sent from it's iframes
if(event.data.indexOf('proxy_ready') > 0){
console.log('facebook ready');
}
}
}
ログイン プロセス中にこれらすべてのメッセージをタイムスタンプ付きでコンソール ログに記録し、どのメッセージをオフにするかを判断すると便利です。例:
2016-12-14 15:13:38.024 app.js:162 FB.init
2016-12-14 15:13:39.257 app.js:1366 _FB_f120116a3bc6178data&logged_in=false&xd_action=proxy_ready
2016-12-14 15:13:43.473 app.js:1366 _FB_f120116a3bc6178type=resize&cb=f291741ffe877f&width=300&height=39
2016-12-14 15:13:47.933 app.js:1366 _FB_f120116a3bc6178xd_action=plugin_ready&name=f66bbdc3fb088&cb=f291741ffe877f&domain=xxx.xxx&origin=https%3A%2F%2Fxxx.xxx%2Ff120116a3bc6178&relation=parent.parent
2016-12-14 15:13:47.934 app.js:1366 _FB_f120116a3bc6178type=resize&width=164&height=39&reposition=false&cb=f291741ffe877f&domain=xxx.xxx&origin=https%3A%2F%2Fxxx.xxx%2Ff120116a3bc6178&relation=parent.parent
clicked button IN FB popup here:
2016-12-14 15:14:24.571 app.js:1366 _FB_f120116a3bc6178type=resize&cb=f291741ffe877f&width=300&height=39
2016-12-14 15:14:29.053 app.js:1366 _FB_f120116a3bc6178xd_action=plugin_ready&name=f66bbdc3fb088&cb=f291741ffe877f&domain=xxx.xxx&origin=https%3A%2F%2Fxxx.xxx%2Ff120116a3bc6178&relation=parent.parent
2016-12-14 15:14:29.055 app.js:1366 _FB_f120116a3bc6178type=refreshLoginStatus&cb=f291741ffe877f&domain=xxx.xxx&origin=https%3A%2F%2Fxxx.xxx%2Ff120116a3bc6178&relation=parent.parent
2016-12-14 15:14:29.071 app.js:1366 _FB_f120116a3bc6178type=resize&width=164&height=39&reposition=false&cb=f291741ffe877f&domain=xxx.xxx&origin=https%3A%2F%2Fxxx.xxx%2Ff120116a3bc6178&relation=parent.parent
2016-12-14 15:14:30.188 app.js:1366 _FB_f120116a3bc6178cb=fbcdc5c882b3bc&domain=xxx.xxx&origin=https%3A%2F%2Fxxx.xxx%2Ff120116a3bc6178&relation=parent&code=AQCl6y6TvwzareonnVCLEFWVglwDApABbs3ATKnbd6iLSZbKZ...mwZDZD&expires_in=6331&base_domain=xxx.xxx&https=1
2016-12-14 15:14:30.193 app.js:171 login_event
2016-12-14 15:14:30.193 app.js:172 connected
2016-12-14 15:14:30.193 app.js:173 Object {authResponse: Object, status: "connected"}
2016-12-14 15:14:30.199 app.js:246 FB.getLoginStatus
2016-12-14 15:14:30.201 app.js:229 connected to FB app
2016-12-14 15:14:30.202 app.js:253 FB.api