在多个返回变量中访问facebooks api info

时间:2013-06-11 04:12:50

标签: jquery facebook-javascript-sdk

我想获取facebook的api值并返回多个变量,以便我可以在我网站上的几个不同页面上使用它。
这就是我想要做的,但由于FB为async,因此值会延迟。

如何在准备好后获得这些价值?

function getFBinfo(){
    FB.getLoginStatus(function(response) {
        if (response.status === 'connected') {
            FB.Canvas.getPageInfo(
                    function(info) {

                            var myClientHeight = info.clientHeight;
                            var myClientWidth = info.clientWidth;
                            var myOffsetLeft = info.offsetLeft;

                            return {clientHeight:myClientHeight, clientWidth:myClientWidth, offsetLeft:myOffsetLeft };
                    }
            ); 

        }
    });
}
然后

访问某些页面上的变量,如:

en  var n = getFBinfo(); 
console.log(n.clientHeight);

1 个答案:

答案 0 :(得分:1)

由于facebook getPageInfo方法是异步方法,所以你可以传递回调而不是返回值,试试这个,

function getFBinfo(callback){
FB.getLoginStatus(function(response) {
    if (response.status === 'connected') {
        FB.Canvas.getPageInfo(
                function(info) {

                        var myClientHeight = info.clientHeight;
                        var myClientWidth = info.clientWidth;
                        var myOffsetLeft = info.offsetLeft;
                        callback({clientHeight:myClientHeight,     clientWidth:myClientWidth, offsetLeft:myOffsetLeft });
                }
        ); 

    }
  });
}

function mycallback(obj)
{
     //You can handle output here
     console.log(obj.clientHeight);
 }

 var n = getFBinfo(mycallback);