0

Facebook JS SDK を使用したログインに問題があります。

さて、ユーザーがページに入ると、更新され続けます-window.location.reload();ユーザーFB.Event.subscribe('auth.login'...がログインしていなくても、起動されます.

これが私のスクリプトです:

window.fbAsyncInit = function() {
    FB.init({
        appId   : '445298832195237', // App ID
        status  : true, // check login status
        cookie  : true, // enable cookies to allow the server to access the session
        xfbml   : true  // parse XFBML
    });

    FB.Event.subscribe('auth.login', function(response) 
    {
        $.ajax({async: false,
                type: 'GET',
                url: 'http://hfyt.pl/fb_register.php',
                success: function(data)
                {
                    //alert(data); 
                    window.location.reload();
                }
            });
        });
    };

http://hfyt.pl/でライブで試すことができます(デバッガーを使用して window.location.reload() のコメントを外すだけです)。私はクロムを使用しています。

4

2 に答える 2

0

ページの読み込み時にユーザーがログインしているかどうかを確認するには、FB.getLoginStatusを使用する必要があると思います。ただし、これにリダイレクトしないようにしてください。 https://developers.facebook.com/docs/reference/javascript/FB.getLoginStatus/

次に、FB.Event.subscribeを使用して、ユーザーがログインして応答が変更されたときにのみリッスンします。

FB.Event.subscribe('auth.authResponseChange', function(response) {  // reload here });

私はそれがそれをするだろうと思います。

于 2012-12-17T04:36:25.023 に答える
0

私が理解している限り、これが起こっていることです:

  1. ページのDOMが読み込まれます
  2. JSSDKは非同期で読み込まれます
  3. ロードされると、ログインステータスをチェックします
  4. ステータスが表示されると、ページが更新されconnected、手順1〜4が実行されます。繰り返す

..これは、1回目だけでなく、すべてのページの読み込みで発生します。これを避けるために、私はあなたに提案します。

  • ページの更新後も存続するもの、つまりlocalStorageにステータスを保存します
  • または、idがwindow.document.reload()に依存しないようにコードを書き直します
于 2012-12-16T19:49:29.623 に答える