Facebook Javascript SDK - 访问用户信息

时间:2014-10-11 12:28:40

标签: javascript jquery facebook sdk

我正在为我的fb应用程序起诉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作为undefined返回,因为FB.api还没有完成,但是如果我写这样的最后一行,一切正常。

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

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

1 个答案:

答案 0 :(得分: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>

当然你也可以摆脱全局变量并使用函数参数。