0

Facebook ログイン ボタンがクリックされたときに発生するイベントはありますか?

Facebook にログインしている場合でも、ユーザーが自分の Web サイトからログアウトできるようにしたいと考えています。ユーザーデータに「AutoLogin」フィールドを設定しました。

AutoLogin が False の場合、Facebook ログイン ボタンがクリックされたときに、ユーザーが再度ログインできるようにしたいと考えています。

関連するメモとして、ユーザーが FB にログインして Facebook ログイン ボタンをクリックすると、Facebook ポップアップが短時間表示されることに気付きました。この短いポップアップを回避する方法はありますか? また、適切なアクションを実行する Javascipt を起動しますか?

4

3 に答える 3

3

「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
于 2016-12-14T15:57:29.667 に答える
2

ログインイベントをサブスクライブできます。

FB.Event.subscribe('auth.login', function(response)
{
  console.log("login_event");
  console.log(response.status);
  console.log(response);
}
);
于 2014-12-12T16:54:13.960 に答える
1

すでに見たことがあるかもしれませんが、リッスンできるこれらのイベントを見てください。

于 2012-07-18T05:29:42.133 に答える