在我开始实施Facebook身份验证之前,我的注销控制器看起来像这样:
# Kill the session
$this->session->sess_destroy();
# Redirect back to main page.
redirect('', 'location');
我尝试修改它以将用户从Facebook注销,但没有运气 .
# Kill the session
$this->session->sess_destroy();
require 'application/sdk/facebook.php';
// Create our Application instance (replace this with your appId and secret).
$facebook = new Facebook(array(
'appId' => '625256',
'secret' => '25256256',
'cookie' => true,
));
$session = $facebook->getSession();
if ($session) {
$location = (string) html_entity_decode($facebook->getLogoutUrl(array('next' => 'http://localhost:8888/taketocollege/')));
header("Location: $location");
exit();
}
# Redirect back to main page.
redirect('', 'location');
我究竟做错了什么?我不打算使用Javascript SDK,因为我希望在控制器中完成所有操作 .
谢谢!!
EDIT: 为了更清楚一点,问题是会话没有被破坏 . 我的注销控制器将用户发送到主页,但主页将Facebook用户重定向到登录页面的会话 . 因此Facebook用户最终登录页面 . 通常,登录页面会自动将其登录,但到那时,它们的会话将被销毁 .
2 回答
你在这里有一个:“注销”按钮,指向你的注销控制器,你试图让你的注销控制器调用一些东西,让用户从Facebook注销 .
如果您使用Facebook登录用户,则不需要注销控制器 . 您只需在页面中显示注销URL:
如果要在用户注销时清除会话,请在
next
页面上为您执行此操作(对您而言,http://localhost:8888/taketocollege/
):希望有所帮助!
我的代码最初将用户重定向到主页 .
该代码将用户重定向到登录页面,因为会话已更改,而不是完全删除 .
通过更改最后两行,我能够解决此问题:
希望它可以帮到某人!