2010-04-30 4 views
5

사용자가 처음으로 페이스 북 응용 프로그램이 포함 된 내 사이트를 방문 할 때 허용하려면 해당 페이지를 허용해야하며 약속을 받았다면 access_token으로 변환 할 수있는 코드를 얻습니다. 여태까지는 그런대로 잘됐다.Facebook access_token : 사용자가 내 앱을 수락하면 어떻게받을 수 있습니까?

하지만 사용자가 이미 사이트를 방문한 후에는 어떻게 얻을 수 있습니까? 이 토큰 양식이 처음 활성화되어 있으면 모든 것이 정상입니다. 하지만 사용자가 일주일 전에 앱을 이미 허용하고 내 페이지 만 다시 방문하면 다른 토큰을 얻으려면 어떻게해야합니까?

+0

특정 언어로 찾으십니까? – Steve

답변

0

쿠키 방법을 사용하여 사용자의 컴퓨터에 access_token을 저장합니다. 여기에있는 get_facebook_cookie 기능

private $cookieSupport = true; 

또는 사용 : Single sign-on with the JavaScript SDK

access_token과는 다음 쿠키에 저장을하여 facebook.php 파일에서

FB.init({appId: 'your app id', status: true, cookie: true, xfbml: true}); 

당신은 참으로 cookieSupport을 설정해야 "fbs_APPID"(만료시)라고합니다. 쿠키를 몇 시간 이상 지속하려면 'offline_access'확장 요청을해야합니다.

응용 프로그램이 언제든지 사용자 대신 권한있는 요청을 수행 할 수있게합니다. 기본적으로 대부분의 액세스 토큰은 짧은 기간 후에 만료되어 응용 프로그램이 실제로 응용 프로그램을 사용하고있을 때 응용 프로그램이 사용자를 대신하여 요청하도록합니다. 이 권한은 OAuth 엔드 포인트가 반환 한 액세스 토큰을 오래도록 만듭니다. 당신이 $ _SESSION을 통해 access_token은 참조 할 수 PHP

session_start(); 
// Create our Application instance. 
$facebook = new Facebook(array(
       'appId' => FACEBOOK_APP_ID, 
       'secret' => FACEBOOK_APP_SECRET, 
       'cookie' => true, 
       'domain' => 'example.com' 

)); 

$session = $facebook->getSession(); 

$me = null; 
// Session based API call. 
if ($session) { 
    try { 
     $uid = $facebook->getUser(); 
     $me = $facebook->api('/me'); 
     $_SESSION['me'] = $me; 
     $_SESSION['uid'] = $uid; 
     $_SESSION['session'] = $session; 

    } catch (FacebookApiException $e) { 
     error_log($e); 
    } 
} 

를 사용

+0

그래서 사용자를 인식하는 유일한 방법은 토큰을 쿠키에 저장하는 것입니다. – hoktar

+0

facebook.php에서 getSession() 함수를 검사하면 $ _GET 또는 $ _COOKIE에서 세션을 빌드하는 것을 볼 수 있습니다. – Jens

-2

[ '세션'] [ 'access_token은'] 당신의 응용 프로그램 내 ,, fbdevtutorials.com

4
더 프로그래머 자습서 이상에 대한

Facebook이 Oauth2로 마이그레이션 했으므로 Javascript로 만든 쿠키가 다릅니다. 나는 그것을 위해 작동하도록하고 레일 용 FGraph 플러그인의 포크에 추가했습니다. - https://github.com/imme5150/fgraph

트릭 중 하나는 쿠키에 저장된 "code"매개 변수에서 access_token을 요청할 때 "redirect_uri"를 전달하지만 비어 있어야합니다.

3

클라이언트 측 흐름에서 범위 매개 변수의 권한을 사용하여 사용자를 OAuth 대화 상자로 리디렉션 할 수 있습니다. 사용자가 이미 앱 및 권한을 수락 한 경우 URI 조각에서 access_token을 사용하여 "redirect_uri"로 리디렉션됩니다. 그렇지 않으면 필요한 권한이 프롬프트됩니다.서버 측에

https://www.facebook.com/dialog/oauth?client_id=YOUR_APP_ID&redirect_uri=YOUR_URL&scope=email,read_stream&response_type=token 

당신이 OAuth를 엔드 포인트에 access_token이 그것을 상환 할 수 있도록이 "코드"가 있어야 흐름 :

https://graph.facebook.com/oauth/access_token?client_id=YOUR_APP_ID&redirect_uri=YOUR_URLclient_secret=YOUR_APP_SECRET&code=THE_CODE_FROM_ABOVE 

문서 : 당신은 또한 수 https://developers.facebook.com/docs/authentication/