javascript - Facebook javascript 在登录时调用的函数运行两次,但应该只运行一次

标签 javascript facebook function

我使用的代码来自:

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 运行,但它运行了两次,我该如何防止这种情况发生? (即在屏幕上测试弹出窗口两次)。

谢谢

最佳答案

此代码运行两次的问题很可能是由于您的页面上包含多个版本的 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");
    }
});

};

关于javascript - Facebook javascript 在登录时调用的函数运行两次,但应该只运行一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8261109/

相关文章:

javascript - 通过python脚本将php变量参数传递给onclick函数

javascript - 使用 jquery ajax json 发送表单数据

javascript - 当所有屏幕通过 React Navigation 获得焦点时,在每个屏幕上执行相同的功能

javascript - 应用程序私有(private)node.js模块

每个帖子都有 Facebook 评论吗?

javascript - 如何将Javascript函数与按钮关联起来?

Facebook 洞察 API 和 CSV 导出日期差异

java - fragment 内的谷歌加登录按钮显示空指针异常 onclick

c++ - C 或 C++ 中的函数类型

Bash shell...查找命令...带通配符的名称...别名或函数