Facebook登出后仍然存在App Session

时间:2011-01-24 07:58:57

标签: php facebook session sdk

我是Facebook API新手,我已经搜索了很多东西来解决这个问题,但我找不到它。 即使在用户退出Facebook之后,浏览器仍然会收到上次会话的cookie。

以下是如何完成的: 1.用户登录Facebook。 2.打开申请。 3.退出Facebook。 3.打开应用程序(未登录),应用程序将加载错误

消息:file_get_contents(https://graph.facebook.com/me/friends?access_token=157847364248123|2.pqWqIaCD8BKobvG_kJy9sA__.3600.1295859600-100001714363073|QfoJpTH-slOry2K1FepeyW8z5f8)[function.file-get-contents]:无法打开stream:HTTP请求失败! HTTP / 1.0 400错误请求

我认为当用户在facebook中注销登录时我需要清除cookie,但我不知道如何在PHP SDK中执行此操作。请帮忙。谢谢!

2 个答案:

答案 0 :(得分:1)

我尝试通过Javascript从Facebook捕获用户注销,然后JS将重定向到清除cookie的控制器功能,但这对我不起作用。我的应用程序仍然处于旧会话状态,导致我的应用程序加载错误,即使用户已注销。

但是我通过在会话检查中添加这两行代码来解决问题:

$uid = $facebook->getUser();
$me = $facebook->api('/me');

当此检查失败时,页面将被重定向到Facebook登录页面。这就是我的代码的样子:

$facebook = new Facebook(array(
'appId'  => 'XXXXXXXXXX',
'secret' => 'XXXXXXXXXXXXXXXXXXX',
'cookie' => true,
));

$session = $facebook->getSession();
$me = NULL;

if ($session)
{
    try
    {
        $uid = $facebook->getUser();
        $me = $facebook->api('/me');

         /// OTHER PROCESS

        $this->load->view('app_page', $data);
    }
    catch (FacebookApiException $e)
    {
        error_log($e);
        $this->output->set_header("Location: http://www.facebook.com, TRUE, 302");
    }
}
else
{
    /// GO TO PERMISSION REQUEST
}

答案 1 :(得分:0)

这可能是先前在这里解决的:How to log out users using Facebook Connect in PHP and Zend?