2013-08-27 2 views
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]; 
+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]; 
}); 
관련 문제