2011-12-18 54 views
0

,所以我想爲我的網站編程Facebook的註銷功能

使用Facebook的註銷按鈕會退出,而不是用戶的事從Facebook網站不會從我的網站

所以我目前的邏輯是在點擊退出按鈕時,改爲調用我的應用程序的註銷功能和會話將被清除等

但後來我也有邏輯別人在什麼地方如果$ facebook-> getUser()正確返回uid,則從db獲取用戶信息並將其設置爲登錄

有沒有辦法阻止$ facebook-> getUser()返回正確的用戶ID?

IE當用戶點擊註銷時,他不應該從實際的Facebook網站註銷,而且$ facebook-> getUser()也不應該返回一個正確的ID,這樣他就不會自動地註銷在再次

回答

0

使用Facebook SDK時需要記住的事情是,當您進行身份驗證時,您基本上是分別登錄到您的網站的Facebook & - 您需要迎合此邏輯。

一旦登錄Facebook,就會創建身份驗證Cookie(不是會話)。您可能正在使用會話進行網站身份驗證,但Facebook正在使用Cookie。

您需要致電$ facebook-> destroySession();如果您不想在隨後的調用中返回UID。看看我的CodeIgniter代碼,* index.php/authenticate/kill_session *方法調用上面的destroySession();方法以及清除我的應用程序會話 - 這完全註銷我的Facebook和我的應用程序:

<?php 
class Facebook_model extends CI_Model 
{ 
public function __construct() 
{ 
    parent::__construct(); 

    $this->config->load('facebook'); 

    $config = array(
     'appId'  => $this->config->item('facebook_api_key'), 
     'secret'  => $this->config->item('facebook_secret_key'), 
     'fileUpload' => false, 
    ); 

    $this->load->library('Facebook', $config); 
} 

public function connect() 
{ 
    $user = $this->facebook->getUser(); 

    $profile = null; 

    if($user) 
    { 
     try { 
      $profile = $this->facebook->api('/me'); 
     } catch (FacebookApiException $e) { 
      error_log($e); 
      $user = null; 
     } 
    } 

    $fb_data = array(
     'me'  => $profile, 
     'gender' => $profile['gender'], 
     'uid'  => $user, 
     'loginUrl' => $this->facebook->getLoginUrl(array('scope' => 'email,user_birthday')), 
     'logoutUrl' => $this->facebook->getLogoutUrl(array('next' => base_url('index.php/authenticate/kill_session'))), 
    ); 

    return $fb_data; 
} 

public function disconnect() 
{ 
    $this->facebook->destroySession(); 
} 

} // EOC 
0

Facebook如何知道用戶註銷您的網站? 將一個標誌放置在本地db表明用戶已註銷。在$ facebook-> getUser()後檢查它。