2012-04-06 4 views
4

아래 코드는 이름과 이메일에 '정의되지 않은'코드를 제공합니다. 그러나 내가 액세스 토큰과 UID를 가지고 있기 때문에 사용자가 로그인하고 있습니까? I 출력 fb.api의 전체 응답이 콘솔에 때 fb.api가 연결된 사용자에게 'undefined'를 반환합니다.

function getToken(){ 
    FB.login(function(response) { 
     if (response.authResponse) { 
      var access_token = response.authResponse.accessToken; 
      var uid = response.authResponse.userID; 
      document.getElementById('accessToken').value=access_token; 
      document.getElementById('uid').value=uid; 
      FB.api('/me', function(response) { 
       console.log('Good to see you, ' + response.name + '.' +response.email); 
      }); 
      document.forms['token'].submit(); 
     } else { 
      return false; 
     } 
    }, {scope:'email,user_likes,friends_likes'}); 
} 

나는 지금 당신이하고 문제 하려는지 볼

[11:46:10.369] ({error:"load-error: unknown"}) 
+0

방금 ​​전체 응답을 기록하고 우리는 페이스 북이 응답 무엇을 알 수 있도록 여기에 게시를 시도 할 수 있습니다 : 같은 은 그래서 보일 것? 예 : * console.log (응답); * –

+0

- [{11 : 46 : 10.369] ({오류 : "로드 오류 : 알 수 없음"}) –

+0

처음으로 이런 유형의 오류가 표시됩니다. 어쩌면 간단한 흐름을 시도해 볼 수 있습니까? 그냥 login을 호출하면 콜백에서 * authResponse *를 확인하고 존재한다면 */me *로 FB.api *를 호출 한 다음 응답을 기록하십시오. 다른 코드, 특히 제출하는 양식을 제거하십시오. 그런 다음 로그인 및 */me * 요청에 대해 fb에서 얻은 응답을 여기에 게시하십시오. –

답변

1

를 얻을. 전체를 다시로드

당신은 (그리고 당신이 모든 코드가 포함되지 않았기 때문에 추측이의) 양식을 제출 한 후합니다 (FB.api 방법을 사용) 및 비동기 요청하고 있습니다를 : 실패하는 이유

페이지에서 비동기 요청을 망쳤습니다. 문제를 해결하는 방법에 관해서는

는 :

가장 좋은 해결책, 내 의견으로는 Server-Side authentication process 등을 사용하는 경우에만 다음, 이후, 캔버스로드 클라이언트 측 SDK를 사용하는 경우. 그런 식으로 클라이언트와 서버 측에서 토큰에 액세스 할 수 있습니다.

또 다른 접근법은 양식을 제출하는 것이 아니라 액세스 토큰을 사용하여 서버에 ajax 요청을 발행하는 것입니다. 두 요청은 모두 비동기식이기 때문에 (FB.api 및 귀하의 서버에) 모든 것이 괜찮을 것입니다.

0

빠른 픽스가 FB.api 함수 내부에서 양식을 제출할 것이라고 생각합니다.

FB.api('/me', function(response) { 
      console.log('Good to see you, ' + response.name + '.' +response.email); 
      document.forms['token'].submit(); 
}); 
관련 문제