为什么从Facebook应用程序无法正常注销?

时间:2014-04-24 13:03:27

标签: php facebook facebook-graph-api

我有一个网站,我想让用户能够使用他们的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登录用户?

2 个答案:

答案 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(这使我在刷新页面后自动再次登录)但是使用此参数我从两个登出。我希望这可以帮助一些身体