2010-10-13 64 views
2

我有奇怪的问题,我如果用户在我有此链接的onclick事件内此代码记录仅显示(使用功能)的退出链接:Facebook的注销混乱

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

从您的描述看,注意注销工作正常,但页面刷新没有。

尝试这样也许:

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

谢谢你的回复,serg,我已经试过了,但是一旦注销执行后它仍然不会重新加载。它似乎是第一次在后台登录我,然后在第二次点击时它意识到它没有登录注销,如果这是有道理的。所以它重新加载页面,一旦它重新加载我的PHP实现其注销并显示登录表单。 – 2010-10-13 20:53:50

+0

@Pete但它实际上是否重新加载页面?第一次重新加载页面后,问题是不刷新页面还是未注销用户?也许它会在服务器端重新加载后再次登录? – serg 2010-10-13 21:01:27

+0

我非常肯定,当链接被点击时,页面会重新加载,现在你提到它。因为在注销之后它不会重定向到谷歌,并且我在onclick事件中将innerhtml更改为“正在注销...”。几秒钟后,它会立即切换到注销。所以也许我需要第二次重新加载? – 2010-10-13 21:19:55

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'; 
    }); 
} 

出人意料的是,它采取2+秒FB.logout完全成功在大多数环境中。显然有一些ajax调用涉及撤销服务器上的身份验证,而不仅仅是破坏本地cookie。