我在我的演示网站中使用fb login connect: 我用了这段代码:
window.fbAsyncInit = function() {
try{
FB.init({
apiKey: '<MY APP KEY>',
channelUrl : 'www.google.com'
});
FB.getLoginStatus(function(response){
loginHandler();
});
}catch(error){}
};
function loginHandler(success,fail)
{
try{
if(success){
alert('i am if');
FB.api('/me', function(response,fail) {
alert("first name == " + response.first_name + "\n ln === " + response.last_name);
});
}
}catch(error){}
}
$('#login').bind('click', function(response) {
try{
FB.login(loginHandler, {scope: 'email,user_likes'});
}catch(error){}
});
$('#logout').bind('click', function() {
try{
FB.logout(function(response){});
}catch(error){}
});
现在我的问题是提醒('我是,如果'); 每次都会显示我是否已将正确的凭据传递给 facebook 或不是和警告(“名字==”+ response.first_name +“\ n ln ===”+ response.last_name); 在用户传递未定义 >错误的凭据,并在用户回来传递正确的信息时显示正确的信息。
一种可能的选择是检查if(response.first_name!=undefined){blah blah....}
,但检查身份验证的方法是否正确?
请说清楚......
答案 0 :(得分:1)
FB.login
和FB.api
无法为您提供成功/失败报告,就像您尝试实施它一样。回调没有第二个参数......
FB.login
回调获得唯一的参数:
来自
FB.getLoginStatus
,FB.login
或FB.logout
的回复。此响应对象包含:状态强>
用户的状态。连接的,未授权的或未知的。
的 authResponse 强>
authResponse对象。
FB.api
回调获取一个且唯一的参数是Graph API的响应,通常(但不总是)包含data
属性,对象字段,布尔值false或error
对象(带{{ 1}},message
和type
属性)
您可以通过更正响应回调来修改code
以处理正确的参数:
loginHandler
答案 1 :(得分:1)
尝试这样的事情:
//for login $("#login").bind("click", function(e) { var fbScope = "email,user_likes"; FB.login(function(response) { if(response.status == "connected"){ console.log("Logged in"); } },{scope: fbScope}); }); //for checking logged in status FB.getLoginStatus(function(response){ if (response.authResponse) { var accessToken = response.authResponse.accessToken; FB.api('/me', function(response) { console.log('I m still loggedin'); }); } }); //for logout $("#logout").live("click", function(e) { FB.getLoginStatus(function(response){ if(response.status == "connected"){ FB.logout(function(response) { console.log("I m logged out now"); }); } else { console.log("Not Logged logged in"); } }); });