退出Facebook但它仍然重新认识$ user

时间:2012-02-03 21:09:25

标签: javascript facebook-graph-api facebook

全部, 我使用Facebook Connect(JS SDK)对我的网站的用户进行身份验证。我甚至在点击代码之前检查是否在我的网站上设置了登录的会话变量,以检查用户是否登录到Facebook。这一切都很好,但是,当用户退出Facebook并退出我的网站并尝试返回我的登录时,它仍然认为用户登录到Facebook,即使我知道他们不是。我怎样才能防止这种情况发生?我尝试在登录按钮上设置autologoutlink = true,但它似乎没有工作。

有什么想法吗?

谢谢!

4 个答案:

答案 0 :(得分:3)

@Madan提供的解决方案为我工作。由于我的应用程序是基于ajax的,因此我无法重新加载浏览器。我每分钟运行一次setInterval()回调函数来检查用户是否仍然登录到facebook。

setInterval(function (){
    FB.getLoginStatus(function(response){
        if(response.status ==='unknown' && FB_LOGIN==1){
            alert('Your Facebook session has been expired');
            member_logout();
        }
    }, true);
},60000);

它就像一个魅力。

答案 1 :(得分:2)

始终将FB.getLoginStatus(callback,true)中的第二个参数设为true ...这是因为facebook响应缓存在SDK中。因此,请使用alway true param进行当前用户会话检查。

答案 2 :(得分:1)

在调用FB.getLoginStatus()并根据这些结果将用户重定向到适当的内容时,我总是有很好的结果。三个条件(虽然对于应用程序,后两个在我看来完全相同)

https://developers.facebook.com/docs/reference/javascript/FB.getLoginStatus/

FB.getLoginStatus(function(response) {
  if (response.status === 'connected') {
    // the user is logged in and connected to your
    // app, and response.authResponse supplies
    // the user's ID, a valid access token, a signed
    // request, and the time the access token 
    // and signed request each expire
    var uid = response.authResponse.userID;
    var accessToken = response.authResponse.accessToken;
  } else if (response.status === 'not_authorized') {
    // the user is logged in to Facebook, 
    //but not connected to the app
  } else {
    // the user isn't even logged in to Facebook.
  }
 });

答案 3 :(得分:0)

$facebook->destroySession();

或者您可以转到此链接

Facebook getUser() function returning user ID after logout