2013-08-27 5 views
0

Я передаю массив в функцию, если присутствует «facebookValue», а затем получает идентификатор пользователя и токен доступа.

Функция работает должным образом в том, что идентификаторы могут выводиться в консоль ... но моя проблема, похоже, является возвращаемыми значениями, которые не захватывают переменные, я получаю undefined.возвращаемые значения из функции возвращают неправильные значения

Вот моя функция

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, маркер доступа) выйти undefined

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

'UID = response.authResponse.userID,' следует читать вместо 'UID = response.authResponse.userID;' (точка с запятой вместо запятой) –

+3

Узнайте, что означает асинхронный. – epascarello

+0

Благодарю вас, ребята. –

ответ

1

Этот код является асинхронным, если вы действительно нужно получить ответ как возвращаемое значение facebook_oAuth, вам нужно будет дождаться завершения асинхронного вызова, но я не рекомендую. Othrwise вы можете использовать этот код:

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]; 
}); 
Смежные вопросы