我使用此代码
<fb:login-button autologoutlink="true" perms="user_likes" size="large"></fb:login-button>
创建登录/注销fb按钮。 一切正常,登录后,登录按钮成为退出按钮。但是,如果用户单击注销按钮,则不会刷新当前页面,因此只有在用户通过身份验证时才应显示的所有内容仍然存在,直到完成手动页面刷新。
如果我收到退出网址(Javascript SDK)
,则不会发生这种情况$logoutUrl = $facebook->getLogoutUrl();
然后自己实现一个注销按钮;在这种情况下,传递一个适当的“next”参数(使用当前页面的url)并重新加载当前页面。
我仍然想使用第一个解决方案,是否可以使用“next”参数?
答案 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/";
}); }