0

我将数组传递给函数,如果存在“facebookValue”,则获取用户 ID 和访问令牌。

该函数可以正常工作,因为 id 可以输出到控制台......但我的问题似乎是返回值没有捕获变量,我得到未定义。

这是我的功能

function facebook_oAuth(arr){

    var checkArray = $.inArray('facebookValue', arr), 
        uid, 
        accessToken;

    if (checkArray == -1) {}
    else{
        FB.getLoginStatus(function(response) {
            if (response.status === 'connected') {
                    uid = response.authResponse.userID, 
                    access_token = response.authResponse.accessToken;
                        console.log(uid + " ? " + accessToken); // ok 
            }
            return [uid, access_token];// doesnt return the values from above
        });
    }
};

我正在获取这样的值,但是值(uid,accessToken)出来了undefined

var myReturn = facebook_oAuth(myArray),
    uid = myReturn[0],
    accessToken = myReturn[1],
    credentialsArray = [uid,accessToken];
4

1 回答 1

1

这段代码是异步的,如果你真的需要得到响应作为facebook_oAuth返回值,你将不得不等待异步调用完成,但我不推荐。否则,您可以使用以下代码:

function facebook_oAuth(arr,callback) {

    var checkArray = $.inArray('facebookValue', arr),
            uid,
            accessToken;

    if (checkArray == -1) {
    }
    else {
        FB.getLoginStatus(function(response) {
            if (response.status === 'connected') {
                uid = response.authResponse.userID,
                        access_token = response.authResponse.accessToken;
                console.log(uid + " ? " + accessToken); // ok 
            }
            callback([uid, access_token]);
        });
    }
}
;


facebook_oAuth(myArray,function(myReturn)
{
    //This code is executed AFTER you retrieve FB login status
    var uid = myReturn[0],
    accessToken = myReturn[1],
    credentialsArray = [uid,accessToken];
});
于 2013-08-27T16:49:04.250 回答