如何处理PHP Facebook会话过期异常?

时间:2014-08-28 20:13:01

标签: php facebook session facebook-php-sdk

我从Javascript SDK登录Facebook。在服务器端,我使用PHP SDK来处理身份验证。我正在使用 FacebookJavaScriptLoginHelper()功能。 我正面临的问题是,在我退出后,我收到了这个错误:

致命错误:未捕获的异常' Facebook \ FacebookSDKException'消息'会话已过期,或对此应用无效。'在此行 $ session->验证(' App_Id','秘密');

if (isset($_SESSION['token'])) {
$session = new FacebookSession($_SESSION['token']);
try {
    $session->validate('App_Id', 'Secret');
} catch(FacebookAuthorizationException $e) {
    unset($session);
    echo "Exception occured, code: " . $e->getCode();
    echo " with message: " . $e->getMessage();
}
}


if (!isset($session)) {
try {
    $helper = new FacebookJavaScriptLoginHelper();
    $session = $helper->getSession();        
    $_SESSION['token'] = $session->getToken();
} catch(FacebookRequestException $e) {
    unset($session);
    echo "Exception occured, code: " . $e->getCode();
    echo " with message: " . $e->getMessage();
}
}

以下是我的两个兴趣点:

  • 如何处理会话过期并在用户登录后刷新它?
  • 我得到了这个FacebookAuthorizationException:"此授权码已被使用"。当我转到上一页并回来时,此错误消失。我认为这是因为javascript和php之间的会话转移处理不当。什么是解决这个问题的正确方法?

由于没有适当的Facebook登录文档,无法找到解决方案。任何建议都会有所帮助。

1 个答案:

答案 0 :(得分:0)

我建议您使用https://github.com/facebookgo

它非常易于使用并可以实施。