0

I am passing in an array into a function, if "facebookValue" is present then acquire user id and access token.

The function works properly in that the id's can be output into console ... but my problem seems to be the return values are not capturing the variables, i get undefined.

Here is my function

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
        });
    }
};

And i'm acquiring the values like this, but the values (uid,accessToken) come out undefined

var myReturn = facebook_oAuth(myArray),
    uid = myReturn[0],
    accessToken = myReturn[1],
    credentialsArray = [uid,accessToken];
t q
  • 4,593
  • 8
  • 56
  • 91

1 Answers1

1

This code is asynchronous, if you really need to get response as facebook_oAuth return value, you will have to wait for async call to finish, but i don't recommend. Othrwise you can use this code:

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];
});
Kryštof Hilar
  • 609
  • 2
  • 10
  • 22