我正在使用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>
如何在单击按钮时才运行此操作?
答案 0 :(得分:0)
在你的代码的这一部分:
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个月之前,你现在可能已经找到了自己的解决方案,请分享你所做的事情,这样我可以放心,如果我做的是正确的。谢谢!