2015-07-10 73 views
0

嗨,我正在尝试从Facebook登录的效应初探一些数据,但我没有成功返回这些值,这是我做的代码检索属性:需要从Facebook回应

function loginfb(){ 
    var resp=[]; 

    FB.login(function(response,resp) { 

     //  console('response:' + response.status); 
     if (response.status === 'connected'){ 
      swal({ 
       title:'Connecté', 
       text: "Vous êtes connecté avec votre compte Facebook", 
       type: "success", 
       confirmButtonColor: "#81d8d0" 
      });     

      getName(); 
      resp = [response.status,response.email,response.name]; 

     }else{ 
      swal("Erreur", "Nous n'avons pas pu vous conecter à votre compte facebook, désolé", "error"); 
      resp = [response.status]; 
     } 
    }); 

    console.log('statusssss: ' + resp[1]); 
} 


window.fbAsyncInit = function initfb() { 
    FB.init({ 
     appId  : 'XXXXXXXXXXXXXX', 
     cookie  : true, // enable cookies to allow the server to access 
          // the session 
     xfbml  : true, // parse social plugins on this page 
     version : 'v2.3' // use version 2.2 
    }); 
}; 

// Load the SDK asynchronously 
(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')); 

// Here we run a very simple test of the Graph API after login is 
// successful. See statusChangeCallback() for when this call is made. 
function getName() { 
    // console.log('Welcome! Fetching your information.... '); 
    FB.api('/me', function(response) { 
     document.getElementById('status').innerHTML =  'Bienvenue, ' +  response.name; 
    }); 
} 

登录阶段是好的用户连接,但我不能返回值的响应来处理它后面的代码。 请帮忙。

+0

这是因为从'FB.login'方法的反应是** **同步你的'的console.log('状态')方法在登录完成之前被调用 – jasonscript

+0

可能重复[如何从异步调用返回响应?](http://stackoverflow.com/questions/14220321/how-to-return-the - 来自异步调用的响应) – CBroe

+0

好的,谢谢目标ws将cookie后面的值推到最后,我直接从FB.API调用它 –

回答

0

最后,这是我做的代码,它为我工作得很好:

function loginfb(){ 


FB.login(function(response) { 


//  console('response:' + response.status); 
if (response.status === 'connected'){ 

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

    swal({ 
     title:'Connecté', 
     text: "Vous êtes connecté avec votre compte Facebook", 
     type: "success", 
     confirmButtonColor: "#81d8d0" 
      },function(){ 


    document.cookie="userCookie=99999999;path=/";  
    document.cookie="userName="+ response.name + ";path=/";   
    document.getElementById('status').innerHTML =  'Bienvenue, ' + response.name; 
    location.reload(); 

    }); 



    }); 

    }else{ 
    swal("Erreur", "Nous n'avons pas pu vous conecter à votre compte facebook, désolé", "error"); 

    } 


    }); 





} 


window.fbAsyncInit = function initfb() { 
FB.init({ 
appId  : 'XXXXXXXXXXXXXXXXXX', 
cookie  : true, // enable cookies to allow the server to access 
        // the session 
xfbml  : true, // parse social plugins on this page 
version : 'v2.3' // use version 2.2 
}); 


}; 

// Load the SDK asynchronously 
(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'));