我正在使用 Facebook 的 JavaScript SDK 并尝试确定用户是否已登录,我有以下代码:
window.fbAsyncInit = function() {
FB.init({
appId:'139894666087975', cookie:true, status:true, xfbml:true
});
$('.login_fb').click(function(){
FB.login(function(response) {
if(response.session)
{
if (response.perms) {
window.location.reload();
}
}
},{perms:'email,user_birthday,user_hometown,user_location,publish_stream'});
});
FB.getLoginStatus(function(response) {
alert(response.authResponse);
if (response.authResponse) {
alert(response.authResponse);
} else {
$.blockUI({
message: $('#fblogin'),
css: {
top: '9%',
left: ($(window).width() - 700) /2 + 'px',
width: '700px',
cursor: 'hand',
border: '10px solid #ccc',
}
});
}
});
};
getLoginStatus 的 response.AuthResponse 是“未定义的”,但我实际上是使用为此应用设置的权限登录的。
知道为什么它会继续显示为未定义吗?当我尝试再次登录时,它只是关闭 Facebook 框(因为我已经登录)并刷新页面,再次显示“未定义”。
感谢您的帮助!
最佳答案
您在其中混合了 OAuth 和 OAuth 2 对象。使用 oauth : true
(推荐为 all apps must use OAuth 2 by Oct 1)将 init 设置为使用 OAuth 2,并始终使用 response.authResponse
而不是 response.session
或使用 OAuth 1 并始终使用 response.session
。如果你转到 OAuth 2,你还需要使用 scope
而不是 perms
来获得你想要的权限。
关于facebook-graph-api - Facebook JS SDK - FB.getLoginStatus = undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7223937/