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

1.token过期后,是否有inbuild方法可以再次获取有效token?

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

4

1 回答 1

1

您可以使用Facebook 的调试工具来检查您的访问令牌的有效性。

普通访问令牌在 2 小时后过期,扩展令牌有效期为 2 个月。

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

好吧,如果您对 $facebook->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);
};
于 2012-12-13T13:23:10.560 回答