0

getSessionFromRedirect() 기능으로 FacebookSession을 가져 오는 데 문제가 없습니다.하지만 토큰을 반환하는 데 문제가 있습니다. Facebook PHP SDK v4 현재 액세스 얻기

Facebook\FacebookSession::setDefaultApplication(
    Config::get('api/facebook/app_id'), 
    Config::get('api/facebook/app_secret') 
); 

$fb = new Facebook\FacebookRedirectLoginHelper(Config::get('api/facebook/url')); 

if(Session::exists(Config::get('session/facebook'))) { 
    //echo Session::get(Config::get('session/facebook')); 
    $session = Session::get(Config::get('session/facebook')); 
} else { 
    $session = $fb->getSessionFromRedirect(); 
    var_dump($session); 
    //Session::put(Config::get('session/facebook'), $session->getToken()); 
} 

if(isset($session)) { 

    //Do Facebook stuff here 

} else { 
    $params = array(
     'scope' => 'email, user_birthday' 
    ); 
    echo "<a href='".$fb->getLoginUrl($params)."'>Login</a>"; 
} 

당신이 볼 수 있듯이

, 나는 그것을 보내고 var_dump처럼 FacebookSession 객체 주위를 연주했지만, 난 여전히 토큰을 얻을 수없는 것. 나는 문서를 읽었고 FacebookSession 객체는 getToken() 함수를 가지고 있지만 그것은 나를 위해 작동하지 않는 것 같습니다. 여기

내가 그래서 같이 될 것입니다 당신이 를 작동하게하기 위해 스크립트의 상단으로 session_start를 작성해야 세션

object(Facebook\FacebookSession)#9 (2) { ["accessToken":"Facebook\FacebookSession":private]=> object(Facebook\Entities\AccessToken)#4 (3) { ["accessToken":protected]=> string(220) "*INSERT TOKEN HERE, THIS WAS REPLACED FOR THE QUESTION*" ["machineId":protected]=> NULL ["expiresAt":protected]=> NULL } ["signedRequest":"Facebook\FacebookSession":private]=> NULL } 

답변

0

나는 실제로 그것을 알아내는 것을 끝내었다. 나는 이미 그것을 위해 session_start()을 돌린 init 파일을 가지고있다.

Facebook\FacebookSession::setDefaultApplication(
    Config::get('api/facebook/app_id'), 
    Config::get('api/facebook/app_secret') 
); 

$fb = new Facebook\FacebookRedirectLoginHelper(Config::get('api/facebook/url')); 

if(Session::exists(Config::get('session/facebook'))) { 
    $session = new Facebook\FacebookSession(Session::get(Config::get('session/facebook'))); 
} else { 
    $session = $fb->getSessionFromRedirect(); 
} 

if(isset($session)) { 
    if(!Session::exists(Config::get('session/facebook'))) { 
     Session::put(Config::get('session/facebook'), $session->getToken()); 
    } 
    //Do Facebook stuff here 

} else { 
    $params = array(
     'scope' => 'email, user_birthday' 
    ); 
    echo "<a href='".$fb->getLoginUrl($params)."'>Login</a>"; 
} 

페이지를 새로 고침하지 않았기 때문에

$session 변수는 그냥 한 번 isset($session)가 호출을 배치했다, 아직 실제 객체가 아닌

0

를 덤프 후 다시 무엇을 얻을

<?php 
session_start(); 
Facebook\FacebookSession::setDefaultApplication(
    Config::get('api/facebook/app_id'), 
    Config::get('api/facebook/app_secret') 
); 
+0

나는 실제로 그것을 알아내는 끝났다. 이미'session_start()'를 init 파일에서 호출 했으므로 그렇지 않습니다. '$ session' var이 설정되었는지를 확인한 후에 함수를 실행할 필요가있었습니다. 그래도 고마워! – cameronmoreau