Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么从Facebook应用程序中注销没有正常进行?_Php_Facebook_Facebook Graph Api - Fatal编程技术网

Php 为什么从Facebook应用程序中注销没有正常进行?

Php 为什么从Facebook应用程序中注销没有正常进行?,php,facebook,facebook-graph-api,Php,Facebook,Facebook Graph Api,我有一个网站,我想让用户能够使用他们的Facebook帐户登录到我的网站。我面临的问题是,当他们登录时,他们会获得他们的个人资料页面,当他们注销时,他们会进入索引页面,但如果他们刷新页面,他们会发现他们再次登录(因为Facebook帐户尚未注销)当他们分别从Facebook注销并再次刷新时,表明从该网站注销成功。 这是我的注销功能: <?php if (isset($_SESSION['logged_in'])) { $facebook = new Facebook(a

我有一个网站,我想让用户能够使用他们的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用户的日志,而不是此代码吗?

只是取消设置
$\u会话['logged\u in']
实际上,经过大量的工作和测试,我发现上面的代码中缺少两个部分,为了工作,我应该如下所示:

<?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,该URl将使您注销


第二件事是
'access\u token'=>$facebook->getAccessToken()
是的,这个参数让人头疼,因为我没有找到任何文档告诉你也应该使用它从facebook注销;因此,如果没有它,我从应用程序中注销,但仍然登录到facebook(这使我在刷新页面后自动再次登录),但使用此参数,我从这两个应用程序中注销。我希望这可以帮助一些人

但是我使用了
session\u destroy()
我想它也会这样做