注销后Facebook注销按钮和重定向

时间:2011-01-26 11:28:09

标签: facebook logout

我使用此代码

<fb:login-button autologoutlink="true" perms="user_likes" size="large"></fb:login-button>

创建登录/注销fb按钮。 一切正常,登录后,登录按钮成为退出按钮。但是,如果用户单击注销按钮,则不会刷新当前页面,因此只有在用户通过身份验证时才应显示的所有内容仍然存在,直到完成手动页面刷新。

如果我收到退出网址(Javascript SDK)

,则不会发生这种情况
$logoutUrl = $facebook->getLogoutUrl();

然后自己实现一个注销按钮;在这种情况下,传递一个适当的“next”参数(使用当前页面的url)并重新加载当前页面。

我仍然想使用第一个解决方案,是否可以使用“next”参数?

3 个答案:

答案 0 :(得分:15)

自己重定向 - 在FB.init()之后的某个地方将其添加到JavaScript:

<script>
  FB.Event.subscribe("auth.logout", function() {window.location = '/logout'});
</script>

当通过FB按钮注销时,此功能将被激活。

答案 1 :(得分:1)

Piskvor的回答是为我做的。我花了多少时间试图解决这个问题。

像CakePHP这样的Facebook插件的主要问题是它们没有附带更新。 API,特别是像Facebook这样的流行API,一直在变化,因为它们正在受到重创。如果最初作为业余爱好编写它的人继续他的生活,并停止更新SDK那些不太了解如何改变这些东西的人就会陷入困境。

工作代码:

尽管如此,感谢Piskvor提供了一个很好的解决方案,这是我的

代码
apps/plugins/facebook/views/helpers/facebook.php

            $init .= $this->Html->scriptBlock(
<<<JS

window.fbAsyncInit = function() {
    FB.init({
        appId : '{$appId}',
        session : {$session}, // don't refetch the session when PHP already has it
        status : true, // check login status
        cookie : true, // enable cookies to allow the server to access the session
        xfbml : true // parse XFBML
    });
     FB.Event.subscribe("auth.logout", function() {
       window.location = '/users/logout'
     });
    {$callback}
};

这里的关键代码是:

     FB.Event.subscribe("auth.logout", function() {
         window.location = '/users/logout'
     });
    {$callback}

答案 2 :(得分:1)

对于集成身份验证(Facebook + Asp.Net MVC),我只使用Javascript和FormsAuthentication.SignOut();

function LogoutFacebook() {    
FB.logout(function (response) {
    window.location = "/facebook/logout/";
});   }