2012-12-11 2 views
0
$facebook = new Facebook(array(
       'appId' =>Yii::app()->params['FBappId'], 
       'secret' =>Yii::app()->params['secret'] , 
       )); 

       // Get User ID 
       $user = $facebook->getUser(); 
       if ($user) { 
       try { 
       // Proceed knowing you have a logged in user who's authenticated. 
       echo $accessToken=$facebook->getAccessToken(); 
       echo '<br/>'; 
       $user_profile = $facebook->api('/me'); 
       print_r($user_profile); echo "normal sdk"; exit; 
       } catch (FacebookApiException $e) { 
        echo $e; exit; 
       $user = null; 
       } 
      } 
      echo "normal sdk end";exit; 

나는 facebook으로 php sdk 3.3.2 및 사용자 로그인으로 시도하여 토큰이 만료 될 때까지 토큰 및 사용자 정보를 인쇄합니다. 약 1 시간 후에 토큰 디버거 세션이 만료되었는지 확인하고 한 번 예외를 한 다음 빈 응답을 보냅니다. 다른 탭의 페이스북에 액세스하고 있습니다. 내 질문은페이 스북 (api) 공백 응답 및 예외 없음

입니다. 1. 토큰이 만료되면 유효한 토큰을 다시 얻는 방법이 있습니까?

2. 빈 응답? 매번 예외를 던져야합니다.

답변

1

Facebook's Debug Tool을 사용하여 액세스 토큰의 유효성을 검사 할 수 있습니다.

정상 액세스 토큰은 2 시간 만료되고 확장 토큰은 2 개월 동안 지속됩니다. 당신이 확장 된 토큰을 원하는 경우

이 비록 이동 : How to extend access token validity since offline_access deprecation

글쎄, 당신은 ('ME /')> $ facebook-에 대한 API를 빈 받고하는 경우; 이는 단순히 사용자가 아직 앱을 승인하지 않았 음을 의미합니다. 다음과 같이 시도하십시오.

$user_id = $facebook->getUser(); 
echo $uid; 

if($user_id){ 
    try { 
    $user_profile = $facebook->api('/me'); 

    } catch (FacebookApiException $e) { 
    error_log($e); 
    $user_id = null; 
    } 
}else{ 
    $login_url = $facebook->getLoginUrl(); 
    echo("<br>login url=".$login_url); 
}; 
+0

예. 연장 유효 기간 2 개월 동안 토큰을받습니다. 하지만 두 번째 질문에 나를 인도 할 수 있니? – Hemc

+0

어떤 방법이 공백 응답을 생성합니까? 너는 예제를 줄 수 있니 .. –

+0

$ facebook-> api ('/ me'); 이 메서드는 세 번째로 새로 고침 할 때 빈 응답을 생성합니다. – Hemc