2012-05-04 42 views
0

由于某些原因,当我检查用户是否登录Facebook时,我在$ facebook-> api('/我');检查访问令牌是否无效,如果用户退出Facebook,即使我从Facebook页面(在另一个选项卡中)退出,我也可以看到用户信息,并且我无法确定用户是否从Facebook注销。

public function __construct() { 
    $facebook = new Facebook(array(
     'appId' => $this->_fbappid, 
     'secret' => $this->_fbappsecret, 
     'cookie' => true, 
    )); 
    $this->_facebook = $facebook; 
} 

public function checkFacebookLogin() { 
    try { 
     $user = $this->_facebook->getUser(); 
     $user_profile = $this->_facebook->api('/me','GET'); 
     return true; 
    } catch(FacebookApiException $e) { 
     return null; 
    } 

}

任何人都可以帮我吗?

回答

0

您可能需要检查用户

facebook->clearAllPersistentData() 

之前清除持久数据如果你想利用该方法来检查状态,你应该将用户重定向到login_status.php:

facebook->getLoginStatusUrl($params) 

获取登录状态URL以从Facebook获取状态。

参数:

  • ok_session:URL中去,如果一个会话发现
  • no_session:该URL去,如果用户没有连接
  • no_user:网址去如果用户没有登录Facebook
+0

好的,使用Facebook-> clearAllPersistentData()的作品,但只是在登录后的页面按钮。如果我访问其他页面,然后回到应用程序页面,它会再次返回登录按钮(显然,如果您清除所有持久数据:)),并且它不是那么好。我不能使用第二个解决方案,因为我只有一个PHP页面与Facebook应用程序,所以我不能使用其他网址。但我不明白为什么API返回给我的用户信息!调用getUser()之后调用api调用不应该说该令牌无效(如果用户注销)?为什么Api不会捕获异常? –

相关问题