【问题标题】:Facebook PHP SDK not logging out userFacebook PHP SDK 未注销用户
【发布时间】:2013-01-18 23:00:22
【问题描述】:

这是一个非常令人沮丧的问题(错误?),我一直在努力解决。似乎很多人抱怨同样的问题,但没有明确的解决方案或教程来解决这个问题。

无论如何,我的问题是我可以让 SDK 让用户正常登录,但是当他们点击 LogOut 时。它将他们重定向到facebook.com/home.php(即使我的网站设置了“下一个”参数),当我再次访问我的网站时,用户仍然没有注销......

这是代码...(Facebook 库是通过 Codeigniter 配置自动加载的)

public function DestroySession()
{
        $this->load->helper('url');

if($this->facebook->getUser())
{
    $this->facebook->destroySession();


    $logout = $this->facebook->getLogoutUrl(array("next" => "http://mysite.com/"));


    redirect($logout, 'location', 301);
}
 }

所以我终于得到了这个工作。您可以在下面看到新功能。由于某些原因,我不完全确定您必须执行这些步骤。

public function DestroySession()
{
    $this->load->helper('url');



//Get User ID
$user = $this->facebook->getUser();

if ($user)
{
    try
    {
        // Proceed knowing you have a logged in user who's authenticated.
       $user_profile = $this->facebook->api('/me');

   //   print_r($user_profile);
    } catch (FacebookApiException $e)
    {

        log_message('eror', $e);

        $user = null;
    }
}

// Login or logout url will be needed depending on current user state.
if ($user)
{
if( session_id() ){} else { session_start() ; }

    $logoutUrl = $this->facebook->getLogoutUrl($params = array('next' => base_url()));
    //echo 'Logout; '.($logoutUrl);
    $this->facebook->destroySession();
    redirect($logoutUrl, 'refresh');



}
}

【问题讨论】:

  • 去掉next参数还能用吗?
  • 不,做同样的事情。
  • 出于好奇,为什么要使用301?!

标签: php facebook facebook-php-sdk


【解决方案1】:

我使用这样的链接使用 Javascript:

<a href="/logout" onclick="FB.logout();">Logout</a> 

这首先调用onclick函数并在facebook上执行注销,然后调用我网站的正常/logout函数。我也更喜欢服务器端解决方案,它将我在两个站点上都注销。

查看http://developers.facebook.com/docs/reference/javascript/FB.logout/

【讨论】:

  • 这是另一种可行的方法,但我想与使用 PHP SDK 保持一致。
【解决方案2】:

查看我的原始问题了解更多上下文。

public function DestroySession()
{
    $this->load->helper('url');



//Get User ID
$user = $this->facebook->getUser();

if ($user)
{
    try
    {
        // Proceed knowing you have a logged in user who's authenticated.
       $user_profile = $this->facebook->api('/me');

   //   print_r($user_profile);
    } catch (FacebookApiException $e)
    {

        log_message('eror', $e);

        $user = null;
    }
}

// Login or logout url will be needed depending on current user state.
if ($user)
{
if( session_id() ){} else { session_start() ; }

    $logoutUrl = $this->facebook->getLogoutUrl($params = array('next' => base_url()));
    //echo 'Logout; '.($logoutUrl);
    $this->facebook->destroySession();
    redirect($logoutUrl, 'refresh');



}
}

【讨论】:

    猜你喜欢
    • 2011-05-31
    • 2013-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-27
    • 1970-01-01
    • 1970-01-01
    • 2011-09-05
    相关资源
    最近更新 更多