我有一个网站,我想让用户能够使用他们的Facebook帐户登录我的网站,我遇到的问题是,当他们登录时,他们获得他们的个人资料页面,当他们退出时,他们会进入索引页面但是如果当他们分别从Facebook注销并再次刷新时,他们刷新了他们发现他们再次登录的页面(因为Facebook帐户仍未注销),这表明网站的注销成功了。 这是我的退出功能:
<?php
if (isset($_SESSION['logged_in']))
{
$facebook = new Facebook(array(
'appId' => 'xxxxxxx',
'secret' => 'xxxxxxxxxxxxxx',
'cookie' => true,
));
//ovewrites the cookie
$facebook->destroySession();
session_destroy();
header('Location: ./');
}
?>
除了此代码之外,我是否应该添加任何代码来从Facebook登录用户?
答案 0 :(得分:0)
取消设置$_SESSION['logged_in']
答案 1 :(得分:0)
实际上经过大量的工作和测试后,我发现上面的代码中有两个缺少的部分,为了工作,我应该如下:
<?php
if (isset($_SESSION['logged_in']))
{
$facebook = new Facebook(array(
'appId' => 'xxxxxxxxxx',
'secret' => 'xxxxxxxxxxxxxxxxxxxx',
'cookie' => true,
));
//access token is important for logging out from facebook DO NOT REMOVE IT
$params = array( 'next' => 'http://www.xxxxxxxx.com/','access_token'=>$facebook->getAccessToken() );
$logoutlink = $facebook->getLogoutUrl($params); // $params is optional.
//ovewrites the cookie
$facebook->destroySession();
session_destroy();
header('Location: '.$logoutlink);
}
?>
要添加的第一件事是getLogoutUrl
以获得正确的注销URl,它会将您注销。
第二件事是'access_token'=>$facebook->getAccessToken()
是的,这个参数很头疼,因为我没有发现任何文件告诉你应该用它从facebook登出;所以没有它我从应用程序登出但仍然登录在facebook(这使我在刷新页面后自动再次登录)但是使用此参数我从两个登出。我希望这可以帮助一些身体