Facebook登录连接状态

时间:2012-04-30 10:54:21

标签: jquery facebook

我在我的演示网站中使用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....},但检查身份验证的方法是否正确?

请说清楚......

2 个答案:

答案 0 :(得分:1)

FB.loginFB.api无法为您提供成功/失败报告,就像您尝试实施它一样。回调没有第二个参数......

FB.login回调获得唯一的参数:

  

来自FB.getLoginStatusFB.loginFB.logout的回复。此响应对象包含:

     

状态
  用户的状态。连接的,未授权的或未知的。
  的 authResponse
  authResponse对象。

FB.api回调获取一个且唯一的参数是Graph API的响应,通常(但不总是)包含data属性,对象字段,布尔值false或error对象(带{{ 1}},messagetype属性)


您可以通过更正响应回调来修改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");
           }
        });
    });