FB.logout不会注销

时间:2012-09-30 17:46:20

标签: facebook login logout

我已经实施了基于Facebook的登录。 FB.login工作正常,但 FB.logout 并不适用。我已尝试使用不同的FB.init,删除cookie,连续多次运行注销页面,但记录用户的唯一方法是在facebook本身。

我用于退出的代码是:

<div id="fb-root"></div>
<script src="http://connect.facebook.net/en_US/all.js"></script>
<script>

  FB.init({
    appId: '***************',
    xfbml: true,
    status: true,
    cookie: true
  });

  FB.getLoginStatus();

  FB.logout();
</script>

有什么想法吗? 谢谢

2 个答案:

答案 0 :(得分:0)

您是否尝试过按钮onclick事件是FB.logout();

function logout(){
     FB.logout(function(response) {
        // user is now logged out
     });
 }

  <button onclick="logout()">LogOut</button>

试试这个

答案 1 :(得分:0)

尝试这样做:

<div id="fb-root"></div>
<script>
  window.fbAsyncInit = function() {
    FB.init({
      appId      : 'YOUR_APP_ID', // App ID
      channelUrl : '//WWW.YOUR_DOMAIN.COM/channel.html', // Channel File
      status     : true, // check login status
      cookie     : true, // enable cookies to allow the server to access the session
      xfbml      : true  // parse XFBML
    });

    // Additional initialization code here
  };

  // Load the SDK Asynchronously
  (function(d){
     var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
     if (d.getElementById(id)) {return;}
     js = d.createElement('script'); js.id = id; js.async = true;
     js.src = "//connect.facebook.net/en_US/all.js";
     ref.parentNode.insertBefore(js, ref);
   }(document));
</script>

然后调用FB.logout()。 FB必须在之前初始化。

来自文档:

  

此代码异步加载SDK,因此不会阻止加载页面的其他元素。这对于确保用户和SEO机器人的快速页面加载尤为重要。

     

上述代码中的URL是协议相对的。这使浏览器可以通过与包含页面相同的协议(HTTP或HTTPS)加载SDK,这将阻止“不安全内容”警告。

     

加载SDK后立即运行分配给window.fbAsyncInit的函数。加载SDK后要运行的任何代码都应放在此函数中,并在调用FB.init之后。例如,您可以在此处测试用户的登录状态或订阅您的应用程序感兴趣的任何Facebook事件。