2012-04-30 223 views
0

我正在嘗試將我的網站與Facebook連接整合,以處理Facebook註冊和Facebook登錄。我使用codeigniter框架。但我現在得到這個問題:註銷Facebook連接會話

  1. 當前的Facebook登錄用戶是「test1」。我去我的網站註冊Facebook,一切正常,「test1」的信息存儲在我的數據庫中。然而,在我從facebook登錄test1後,在Facebook上登錄「test2」後,我回到我的網站並重新註冊facebook,它仍然保存着「test1」的信息。

  2. 我使用離子認證庫來處理用戶從我的網站註銷。但是,在我切換Facebook測試用戶帳戶並再次執行「使用Facebook登錄」後,它仍會獲得以前的Facebook用戶。

根據以上2種情況,似乎facebook會話沒有被清除?我很長時間在這個問題上苦苦掙扎,請幫忙!

我用這個來獲得用戶數據: $ fb_usr = $ this-> fb_connect-> user; (似乎不管怎麼facebook的用戶姓張,fb_connect總是返回相同的用戶)

和fb_connect是某事像這樣:

<?php 
     include(APPPATH.'libraries/facebook/facebook.php'); 

     class Fb_connect extends Facebook{ 

      //declare public variables 
      public $user   = NULL; 
      public $user_id  = FALSE; 

      public $fbLoginURL = ""; 
      public $fbLogoutURL = ""; 

      public $fb   = FALSE; 
      public $fbSession = FALSE; 
      public $appkey  = 0; 

      //constructor method. 
      public function __construct() 
      { 
         $CI = & get_instance(); 
         $CI->config->load("facebook",TRUE); 
         $config = $CI->config->item('facebook'); 
         parent::__construct($config); 
         $this->user_id = $this->getUser(); // New code 
         $me = null; 
         if ($this->user_id) { 
          try { 
           $me = $this->api('/me'); 
           $this->user = $me; 
           } catch (FacebookApiException $e) { 
            error_log($e); 
           } 
       } 

       if ($me) { 
        $this->fbLogoutURL = $this->getLogoutUrl(); 
       } else { 
        $this->fbLoginURL = $this->getLoginUrl(); 
       }   
      } //end Fb_connect() function 
} 

回答

1

我認爲你需要做的是將「下一個」用於getLogoutUrl()調用的參數。例如:

$args['next'] = site_url('logout'); // replace "logout" with your controller which will clear the session 
$fbLogoutURL = $facebook->getLogoutUrl($args); 

然後,在設置爲「下一個」的控制器中,您需要清除會話數據。

class Logout extends CI_Controller { 
    public function index() { 
     $facebook->destroySession();  
     $this->session->sess_destroy(); // Assuming you have session helper loaded 
     $this->load->view('logout'); 
    } 
} 

讓我知道是否有幫助。

+0

另外,我想你還需要在你的控制器中調用$ facebook-> destroySession()。 (編輯原來的帖子,包括這個) – ametren

+0

嗨@ametren,是的,的確,我發現我忘了撥打destroysession功能......謝謝! – Mario

+0

我的環節永遠不會破壞 – nicky