2011-10-10 129 views
5

我有一個使用PHP SDK和JS SDK的網站。註銷JS SDK不會註銷PHP SDK

更新到OAuth後,我注意到註銷JS並沒有實際登錄用戶的PHP。

看起來像一般的解決方案是打電話給'/我',然後,如果該錯誤,假設用戶已註銷。但是,我不需要在每個頁面渲染上調用/ me,我只想知道用戶是否登錄,而不會在每個渲染上發生FB API調用的性能影響。

有沒有辦法讓PHP SDK知道通過JS SDK發生的註銷?

有些事情我已經試過:

  • 註釋掉setPersistentData的Facebook.php
  • 內容手動刪除FBSR _ :: :: APPID餅乾

謝謝!

+1

您是否嘗試過類似AJAX調用一個頁面,這個['$ facebook-> destorySession()'](https://github.com/facebook/php-sdk/blob/master/src/ base_facebook.php#L1088)方法在JS回調? – ifaour

+0

看看這個最近更新到PHP SDK:https://github.com/facebook/php-sdk/commit/4b0e00096c01a959c3f7d9b0655856c17c46383f也許你可以找到它相關的 –

+0

SDK的版本我沒有destroySession,這似乎工作。謝謝! –

回答

0
setcookie(session_name(), '', time()-42000, '/'); 
unset($_SESSION); 
0

從Facebook庫

$access_token = $this->facebook->getAccessToken(); 

獲取用戶訪問令牌,然後使用該代碼的註銷功能

if ($this->facebook_user) 
     { 


     $logoutUrl = $this->facebook->getLogoutUrl()."&access_token=".$access_token; 


     redirect($logoutUrl); 
     } 

,並在Facebook的庫文件中的一些變化。

public function getLogoutUrl($params=array()) { 
    return $this->getUrl(
     'www', 
     'logout.php', 
     array_merge(array(
     'next' => $this->getCurrentUrl(), 

    ), $params) 
    ); 
    }