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 に答える