2012-12-11 19 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; 

我试过用php sdk 3.3.2和用户登录facebook它打印令牌和用户信息直到令牌过期。大约一个小时后,我通过令牌调试器会话过期检查,它给予异常一次,然后空白response.but在另一个选项卡Facebook正在访问。 我的问题是facebook api空白响应并没有例外

1.当令牌过期时,是否有任何inbuild方法可以再次获得有效令牌?

2.为什么空白答复?每次它应该抛出异常

回答

1

您可以使用Facebook's Debug Tool来检查您的访问令牌的有效性。

正常访问令牌在2小时后过期,并且扩展令牌持续2个月。

如果你想扩展的标记,请尽管这:How to extend access token validity since offline_access deprecation

好吧,如果你正在为$ 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

ya我得到了2个月有效性的扩展令牌。但你能指导我解决第二个问题吗? – Hemc

+0

哪种方法正在生成空白响应?你可以举一个例子.. –

+0

$ facebook-> api('/ me');此方法在第三次刷新时生成空白响应 – Hemc