2

서버 측 인증을 사용하여 웹 응용 프로그램을 작성하고 있으며 응용 프로그램에 Facebook의 Javascript SDK를 활용할 수있는 방법을 찾아 내려고 노력했습니다. .서버 측 인증 중에 생성 된 액세스 토큰에서 authResponse를 수동으로 설정하는 방법

FB.init에 대한 설명서는 선택적 authResponse 매개 변수를 "getAuthResponse에서 검색 가능한 객체를 수동으로 설정"하는 데 사용되는 것으로 정의합니다. 또한 일단 획득되면 응용 프로그램은 향후 액세스를 위해 전체 authResponse 객체를 저장할 수 있다고 말합니다. 이것은 응용 프로그램이 Javascript SDK의 인증 인 FB.login을 사용하지만 서버 측 인증을 사용하는 응용 프로그램은 어떻게됩니까?

서버 측 인증을 사용하면 내 앱이 그래프 API 호출에 필요한 가장 중요한 정보 인 사용자의 액세스 토큰을 얻을 수 있습니다. 이 access_token만으로도 Javascript SDK와 함께 사용하도록 인증하는 데 유효한 유효한 authResponse 객체를 만들 수 있기를 바랍니다.

유효한 "accessToken"필드가 포함 된 authResponse로 FB.init (유효한 appID, channelUrl 및 기타 매개 변수 사용) 만 호출하는 것만으로는 충분하지 않습니다. userId를 포함하면 부족합니다. 이상적으로는 이러한 매개 변수만으로도 효과적입니다. authResponse에 대해 정의 된 유일한 다른 것은 'expiresIn'과 'signedRequest'입니다. 이 매개 변수 중 하나라도 유효한 authResponse 객체를 생성하기에 충분할 수 있습니까? 어떤 값을 할당해야합니까? https://developers.facebook.com/docs/authentication/signed_request/

이 문서는 질문의 번호를 제기

은 내가 'signedRequest'의이 설명을 발굴 할 수 있었다. 나는 서명이 대칭 알고리즘에 의해 생성된다고 가정한다. 그렇지 않다면 생성 할 수 없습니다. 가능하다면, 페이로드에 대한 설명은 결코 구체적이지 않습니다. 9 개의 매개 변수 목록이 있으며 필요한 매개 변수가없는 매개 변수가 있습니다.

+0

이 시나리오에서는 수동으로 아무 것도 전달하지 않아도됩니다. JS SDK를 '쿠키 : true'로 초기화 했습니까? 서버 측 로그인을 한 후에 FB.getLoginStatus를 호출 해보십시오 - 어떤 응답이 제공합니까? – CBroe

답변

0

CBroe가 말했듯이 수동으로 아무것도 넘겨서는 안됩니다. FB.getLoginStatus에 대한 호출로 시작하여 자바 스크립트 핸들러를이 메소드의 인수로 전달합니다. getLoginStatus 호출에서 authResponse가 반환됩니다.

물론 이론 상으로는 access_token 매개 변수를 FB.api 호출에 전달할 수 있습니다./me? access_token = blah_blah, 여기서 blah_blah는 가지고있는 문자열이지만 다시 필요하지는 않습니다.이 값을 응답 핸들러에 위임하는 것이 좋습니다.

액세스 토큰 생성/확장/확인을 위해 javascript sdk 및 서버 측 인증을 사용할 때 매우주의하십시오. 결국 두 개의 별도 코드 경로를 유지하게되고 페이스 북과 동일한 호출을 계속 반복하게됩니다. 사용자 측에 액세스 토큰을 저장하더라도 액세스 토큰을 얻기 위해 서버 측 호출을하고 액세스를 사용하기 위해 FB.api에 대한 클라이언트 측 호출을하는 대신 항상 가장 적합한 접근 방식을 선택하는 것이 좋습니다 토큰.

+0

궁금한 점이 있으시면 이미 제안한 것을 시도했지만 유효하지 않은 access_token을 사용하고 있다는 오류가 나타납니다.API 호출을하기 전에 getLoginStatus가 완료되기를 기다리지 않고 있음이 밝혀졌습니다. – Jon

+1

마지막으로 서버 측 웹 앱에서 javascript SDK를 사용할 때 액세스 토큰을 수동으로 설정할 수 있다는 점이 가치 있다고 생각합니다. 내 앱은 사용자의 access_token을 저장하고 사용자를위한 세션을 만듭니다. 사용자가 Facebook에서 로그 아웃하면 내 앱에 계속 로그인됩니다. 다른 사람이 다른 facebook 계정에 로그인하면 원래 사용자가 계속 로그인합니다. 그러나 Javascript SDK를 사용하면 내 앱과 다른 사용자를 인식하게됩니다. 설명서에서는 authResponse 설정을 지원하지만 그렇게하는 방법에 대한 정보가 충분하지 않다고 제안합니다. – Jon

1

거기에 대한 해결책이 있습니다. 나는 그렇게 쉽게 생각하지 않았다. 단순히 요청 매개 변수로 access_token이 추가 -

FB.api('/me?access_token={{ access_token }}', function (me) { 
    console.log(me); //do anything with me 
}); 

그래서 당신은 전에 FB에 OBJEKT 변수를 설정할 필요가 없었다.