Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 仅在用户单击按钮时运行Facebook登录_Javascript_Facebook_Facebook Graph Api - Fatal编程技术网

Javascript 仅在用户单击按钮时运行Facebook登录

Javascript 仅在用户单击按钮时运行Facebook登录,javascript,facebook,facebook-graph-api,Javascript,Facebook,Facebook Graph Api,我正在使用Facebook SDK检索Facebook上当前登录的用户,并输出他们的姓名和电子邮件地址 我遇到的问题是,当用户访问我的页面时,他们的姓名和电子邮件地址会自动显示。我希望只有当他们点击Facebook登录功能时,这种情况才会发生 我的JS是: function statusChangeCallback(response) { if (response.status === 'connected') { updateUIWithFacebookFields();

我正在使用Facebook SDK检索Facebook上当前登录的用户,并输出他们的姓名和电子邮件地址

我遇到的问题是,当用户访问我的页面时,他们的姓名和电子邮件地址会自动显示。我希望只有当他们点击Facebook登录功能时,这种情况才会发生

我的JS是:

function statusChangeCallback(response)
{
    if (response.status === 'connected') {
      updateUIWithFacebookFields();
    }
}

function checkLoginState()
{
    FB.getLoginStatus(function(response) {
      statusChangeCallback(response);
    });
}

window.fbAsyncInit = function()
{
    FB.init({
        appId      : 'snipped',
        cookie     : false,
        xfbml      : true,
        version    : 'v2.1'
    });

    FB.getLoginStatus(function(response)
    {
        statusChangeCallback(response);
    });
};

(function(d, s, id)
{
    var js, fjs = d.getElementsByTagName(s)[0];
    if (d.getElementById(id)) return;
    js = d.createElement(s); js.id = id;
    js.src = "//connect.facebook.net/en_US/sdk.js";
    fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));

function updateUIWithFacebookFields()
{
    FB.api('/me', function(response)
    {

        var registerUsernameElm = document.getElementById('username');
        var registerUserEmailElm = document.getElementById('useremail');

        if(registerUsernameElm)
        {
            registerUsernameElm.value = response.name;
        }
        if(registerUserEmailElm)
        {
            registerUserEmailElm.value = response.email;
        }

    });
}
我的按钮代码是:

<fb:login-button scope="public_profile,email" size="large" onlogin="checkLoginState();"></fb:login-button></span>


我怎么能只在点击按钮的时候运行这个呢?

哇,我很惊讶没有人愿意回答这个问题。就在几分钟前,我也遇到了同样的问题,并搜索了同样的问题。由于我找不到完全相同问题的答案,我试着自己做实验。下面是我想到的,但用你自己的例子:

在代码的这一部分:

window.fbAsyncInit = function()
{
FB.init({
    appId      : 'snipped',
    cookie     : false,
    xfbml      : true,
    version    : 'v2.1'
});

FB.getLoginStatus(function(response)
{
    statusChangeCallback(response);
});
};
我刚刚删除了FB.getLoginStatus部分,因为当您按下按钮时将调用它。因此,您的代码变成:

window.fbAsyncInit = function()
{
FB.init({
    appId      : 'snipped',
    cookie     : false,
    xfbml      : true,
    version    : 'v2.1'
});
};
就这样

这是一个我能想到的简单解决方案,所以我不确定这是否是最佳实践。由于这个问题已经问了2个月了,您现在可能已经找到了自己的解决方案,请分享您所做的,这样我可以确信我所做的是否正确。谢谢