Facebook注销按钮并在注销后重定向

Posted

技术标签:

【中文标题】Facebook注销按钮并在注销后重定向【英文标题】:Facebook logout button and redirect after logout 【发布时间】:2011-06-15 19:09:31 【问题描述】:

我用这个代码

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

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

如果我获得注销 url (javascript SDK),则不会发生这种情况

$logoutUrl = $facebook->getLogoutUrl();

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

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

【问题讨论】:

@Piskvor 我试过了,但到目前为止没有任何帮助facebook.***.com/questions/8066589/… 【参考方案1】:

Piskvor 的上述回答为我做了。我花了多少时间试图弄清楚这一点真是太疯狂了。

像 Facebook for Cakephp 这样的插件的主要问题是它们没有更新。 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

【讨论】:

请不要添加“谢谢”作为答案。在网站上投入一些时间,您将获得足够的 privileges 来为您喜欢的答案投票,这是 Stack Overflow 表达感谢的方式。【参考方案2】:

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

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

【讨论】:

【参考方案3】:

自己进行重定向 - 将其添加到 JavaScript,在 FB.init() 之后的某处:

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

当通过 FB 按钮注销时会触发此功能。

【讨论】:

完美运行,非常感谢。我应该注意到在我的示例代码中已经有 aFB.Event.subscribe('auth.login', function() window.location.reload() );对于登录部分。对注销执行相同的操作是正确的方法。 @Eugenio:不客气。几个月前我也在做同样的事情,我认为这是一个很常见的问题:)

以上是关于Facebook注销按钮并在注销后重定向的主要内容,如果未能解决你的问题,请参考以下文章

如何配置在Django中注销后重定向到哪里?

如何配置在Django中注销后重定向到哪里?

如何覆盖注销后重定向网址

注销后重定向[关闭]

从 ASP.NET MVC 客户端应用程序和 .NET 5 openiddict 服务器注销。注销后重定向 URL 无效

注销后如何停止 Symfony 重定向