2011-10-10 124 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) 
    ); 
    }