facebook api空白回复,也不例外

时间:2012-12-11 13:42:32

标签: php facebook facebook-graph-api facebook-php-sdk

 $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,它打印令牌和用户信息直到令牌过期。大约一个小时后,我通过令牌调试器会话检查到期,它给出一次异常然后空白响应。但在另一个选项卡中正在访问facebook。 我的问题是

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

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

1 个答案:

答案 0 :(得分:1)

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

普通访问令牌在2小时后到期,扩展令牌持续2个月。

如果您需要扩展令牌,请执行以下操作:How to extend access token validity since offline_access deprecation

好吧,如果你因为$ facebook-&gt; api('/ me')而空白;这只是意味着用户还没有授权应用程序。试试这样的事情 -

$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);
};