0

我的网站上有一个注销页面,如下所示:

<div id="fb-root"></div>
    <script>
      // Load the Facebook 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));

      // Init the SDK upon load
      window.fbAsyncInit = function() {
        FB.init({
          appId      : '[valid_app_id]' // App ID
        });
        FB.getLoginStatus(function(loginResponse){
          // As soon as we get the login status... log out!
            FB.logout(function(logoutResponse) {
            // logged out!
          }); 
        });
      } 
    </script>

从香草 Chrome 浏览器访问时,该页面运行良好。但是,如果

[x]Block third-party cookies and site data

在 Chrome 的“内容设置...”下选中选项,页面无法注销用户,并报告

FB.logout() called without an access token.

这个问题有解决方法吗?我希望能够注销用户,即使他们有比平常更严格的安全设置。

4

1 回答 1

0

我创建了一个解决此问题的解决方案,只需为您的访问令牌定义一个空值,最后使用 getLogoutUrl() mrthod 将他重定向到注销页面:

$_SESSION['fb_YOUR_APP_ID_access_token'] = '';
$logout = $facebook->getLogoutUrl(array( 'next' => 'YOUR_LOGOUT_MESSAGE_PAGE'));
header("Location: $logout " );

对不起,我的英语不好!

于 2012-07-26T16:56:27.200 回答