2014-10-11 90 views
0

我为我的fb应用程序起诉javascript sdk。Facebook Javascript SDK - 访问用户信息

我面临的问题是我无法将用户信息保存在变量中,而是将其用在我需要的应用程序中。

这是我的代码:

<script> 
var userfb; 
FB.getLoginStatus(function(response) { 
    if (response.status === 'connected') { 
     FB.api('/me', function(response) { 
      userfb = response; 
      console.log (userfb); 
     }); 
    } 
}); 
$(document).ready(function() { 
    $('.firstname input').val(userfb.first_name); 
}); 
</script> 

这将返回userfb.first_name如不确定,因为FB.api还不完,但如果我写的最后一行就是这样,一切工作正常。

setTimeout(function(){$('.firstname input').val(userfb.first_name);}, 3000); 

任何人都知道如何在不使用setTimout的情况下从我的应用程序的任何位置访问userfb?

回答

0

你需要考虑异步:

<script> 
var userfb; 
$(document).ready(function() { 
    FB.getLoginStatus(function(response) { 
     if (response.status === 'connected') { 
      FB.api('/me', function(response) { 
       userfb = response; 
       $('.firstname input').val(userfb.first_name); 
      }); 
     } 
    }); 
}); 
</script> 

与函数另一种解决方案:

<script> 
var userfb; 

function onConnected() { 
    $('.firstname input').val(userfb.first_name); 
} 

$(document).ready(function() { 
    FB.getLoginStatus(function(response) { 
     if (response.status === 'connected') { 
      FB.api('/me', function(response) { 
       userfb = response; 
       onConnected(); 
      }); 
     } 
    }); 
}); 
</script> 

当然你也可以摆脱全局变量和使用功能的参数。