【问题标题】:Why does the logout did not occur properly from Facebook app?为什么无法从 Facebook 应用程序正确注销?
【发布时间】:2014-04-24 13:03:26
【问题描述】:

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

【问题讨论】:

    标签: php facebook facebook-graph-api


    【解决方案1】:

    只需取消设置$_SESSION['logged_in']

    【讨论】:

    • 但我使用session_destroy() 我认为它是一样的
    【解决方案2】:

    其实经过大量的工作和测试我发现上面的代码中有两个缺失的部分为了工作我应该如下:

    <?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'=&gt;$facebook-&gt;getAccessToken() 是的,这个参数令人头疼,因为我没有找到任何文档告诉你也应该使用它来从 facebook 注销;因此,如果没有它,我会从应用程序中注销,但仍会登录 facebook(刷新页面后,我会再次自动登录),但是使用此参数,我已从它们中注销。我希望这可以帮助一些身体

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-20
      • 2016-06-03
      • 1970-01-01
      相关资源
      最近更新 更多