2011-01-21 7 views
3

나는 이것에 관해 약간 새로운 것이므로 나와 함께 견뎌 라. 잘 작동하는 Javascript SDK를 통해 "Facebook에서 로그인"버튼을 설치했습니다. PHP 코드 (facebook.php)도 설정했습니다 자바 스크립트를 통해 Facebook에 성공적으로 로그인 할 수 있지만 PHP를 통해 세션의 UID에 액세스 할 수 없습니다. 그래서 PHP로 세션 자바 스크립트 세트에 액세스 할 수 있습니까? 감사Facebook 쿠키를 어디에서 찾을 수 있습니까?

편집 : (가 쉽게 읽을 수 있습니다 있도록 아래 여기에서 게시 코드)

내가 응답을 로그인 콘솔을 볼 수 있습니다.

FB.getLoginStatus(function(response) { 
    console.log(response.session.uid); 
}); 

페이지를 새로 고침하고 PHP를 통해 설정된 세션에 액세스하려고하면 null이됩니다. *

require_once(RELATIVE_PATH.'applibs/facebook.php'); 
$config = array('appId'=>Config::$fb_app_id, 'secret'=>Config::$fb_secret, 'cookie'=>true); 
$fb = new Facebook($config); 
$fb->getUser(); // this will equal null because the $fb object isnt finding the cookie supposedly set by javascript 

는 facebook.php 라인 358 ... $ cookieName = $ this-> getSessionCookieName에

()에 디버깅을 않았다
// fbs_myNumericAppId를 다시 실행합니다.
if (isset ($ _ COOKIE [$ cookieName])) {
// FAILS! $ _COOKIE [ 'fbs_myNumericAppId']

내 facebook.com에 로그인하면 어떻게 내 앱 ID가 무엇인지 알 수있는 것처럼 보입니다.
facebook.com에 로그인 한 후 $ _COOKIE에 관련된 페이스 북이 없습니다. 따라서 facebook.com을 통해 페이스 북에 로그인하려면 웹 사이트에서 로그인 한 것을 알게하려면 페이지로드시 FB.login을 실행해야합니다. 그런 다음 PHP가 $ _COOKIE에 반환 된 javacript 정보를 통해 쿠키를 설정해야 PHP가 다른 곳의 정보를 가져올 수 있습니다.

답변

4

나는 blog postpreviousanswers을 참조 점으로 사용할 수 있습니다.

Facebook에 사이트를 "신청서"로 등록하셨습니까? 그렇지 않다면, 그렇게해야합니다. 귀하의 사이트가 사용자의 정보에 액세스 할 수 있도록 페이스 북에서 설정 한 쿠키는 귀하의 응용 프로그램 ID와 "비밀"(귀하가 공유하지 말아야 할 긴 영숫자 문자열, 또는 다른 응용 프로그램이 사용자를 가장 할 수 있습니다.) 사용자 ID와 사용자 및 응용 프로그램에 고유 한 인증 토큰 (데이터에 부여한 권한 표시)을 사용하여 암호화 된 값을 설정합니다.

쿠키는 다른 쿠키와 마찬가지로 요청과 함께 사이트에 게시됩니다. 애플리케이션의 비밀을 사용하여 해독하고 사용자의 ID와 인증 토큰을 추출한 다음 Facebook의 그래프 API를 통해 데이터에 액세스하는 데 사용하게됩니다.

+0

예 앱을 등록했습니다. 나는 자바 스크립트를 통해 로그인 할 때 response.session을 볼 수 있지만 PHP는 그렇지 않다. – hogsolo

+0

@hogsolo : 당신이하려는 것을 코드로 게시 할 수 있습니까? – David

+0

@hogsolo : 좋습니다. 게시 한 모든 코드 (예 : 응용 프로그램 비밀)에서 손상된 부분을 난독 처리해야합니다. JavaScript를 통해서도 페이스 북과 상호 작용할 수있는 여러 가지 방법이 있으므로 문제를 재현 할 수있는 코드 기준을 사용하는 것이 훨씬 쉽습니다. – David

관련 문제