Facebook退出混乱

时间:2010-10-13 19:58:53

标签: javascript facebook

我有一个奇怪的问题,我有一个注销链接,只有在用户登录时才会显示。我在此链接的onclick事件中有这个代码(使用函数):

    FB.logout();
    window.location = 'http://www.google.com';

如果我点击这一次,没有任何反应,我知道该函数被执行,因为我已经通过警报进行了测试。但是,如果我再次单击它,页面将重新加载,用户确实已注销。该页面永远不会定向到google.com,因此该功能永远不会像window.location部分那样。

我有window.location,因为我认为如果我可以使用window.location.refresh刷新页面,一旦注销完成,它就会成功登出用户。但是,如果有人有关于如何从Facebook注销用户的任何其他技术,我很乐意听到他们!我试图手动删除cookie,但这不起作用,cookie仍然存在由于某种原因。我也试过这个:

    FB.logout(function(response) {
    window.location = 'http://www.google.com';
    });

我知道这样的回调是可能的,因为文档:

http://developers.facebook.com/docs/reference/javascript/FB.logout

以前有其他人有这个问题吗?任何建议都会有所帮助!

更新:经过一些调试后,我发现如果我点击链接一次。然后手动刷新它记录用户的页面。

2 个答案:

答案 0 :(得分:2)

根据您的描述,我认为注销工作正常,但页面刷新却没有。

尝试类似这样的事情:

FB.logout(function(response) {
    window.location.reload(true);
});

答案 1 :(得分:0)

您可以尝试在回调函数中发出警报,以查看FB.logout是否真的完全成功。

我最初将FB.logout直接放在锚点链接的onclick事件中,虽然在FF和Chrome中有效但它在IE或我的Android浏览器中无效。

FF和Chrome会快速执行FB.logout调用,以使其正常工作,但IE和移动浏览器(由于网络速度以及JavaScript引擎的差异)将无法在浏览器加载前成功完成调用无论您重定向到哪个页面。

我想我正在尝试做你正在做的事情,这段代码对我有用:

function mysignout(url)
{
    FB.logout(function()
    {
        top.location.href = 'url';
    });
}

令人惊讶的是,FB.logout需要2秒多才能在大多数环境中完全成功。显然有一些ajax调用涉及撤销服务器上的身份验证,而不仅仅是破坏本地cookie。