0

我已经实现了基于 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>

有任何想法吗?谢谢

4

2 回答 2

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 事件。

于 2014-02-28T11:36:31.490 回答
0

你试过让一些按钮点击事件是 FB.logout();

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

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

尝试这个

于 2013-02-05T21:08:49.827 回答