ログイン時にFacebook JavaScriptが呼び出される機能は2回実行されますが、1回だけ実行する必要があります

私は以下のコードを使用しています:

http://thinkdiff.net/demo/newfbconnect1/jssdkouth2.html

私のアプリにFacebookを統合するために、私は以下の機能を持っています:

function login(response, info){
    if (response.authResponse) {
        showLoader(true);
        var accessToken                                 =   response.authResponse.accessToken;      

        fqlQuery();

        userInfo.innerHTML                             = 'Logged in';
        document.getElementById("fb-auth").setAttribute("class", "fb_logout");
        showLoader(false);
        document.getElementById('other').style.display = "block";
    }
}


function fqlQuery(){
    FB.api('/me', function(response) {
        //http://developers.facebook.com/docs/reference/fql/user/
        var query       =  FB.Data.query('select email from user where uid={0}', response.id);      
            alert("test");

    });
};

私が持っている問題は、fqlqueryが実行する関数をログインするときです。ただし、2回実行する以外はどうすればこの問題を防ぐことができますか? (つまり、画面上のポップアップを2回テストする)。

ありがとう

1

1 答え

このコードが2回実行される問題は、ページに複数のバージョンのSDKが含まれている可能性が高いためです。例えばソーシャルプラグインやアプリケーションの初期化など、複数のボタンを含む

SDKの問題を複数回初期化するか、複数回実行されないようにfqlQuery関数に相互排除チェックを追加することができます。

function login(response, info){
    if (response.authResponse) {
        showLoader(true);
        var accessToken = response.authResponse.accessToken;      

        fqlQuery();

        userInfo.innerHTML                             = 'Logged in';
        document.getElementById("fb-auth").setAttribute("class", "fb_logout");
        showLoader(false);
        document.getElementById('other').style.display = "block";
    }
}
var hasRun = false;
function fqlQuery(){
    if (hasRun === false) {
        hasRun = true;
        FB.api('/me', function(response) {
            //http://developers.facebook.com/docs/reference/fql/user/
            var query =  FB.Data.query('select email from user where uid={0}', response.id);      
            alert("test");
    }
});

};

0
追加された
JavaScript - 日本のコミュニティ
JavaScript - 日本のコミュニティ
2 参加者の

日本人コミュニティのjavascript