我有一个奇怪的问题,我有一个注销链接,只有在用户登录时才会显示。我在此链接的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
以前有其他人有这个问题吗?任何建议都会有所帮助!
更新:经过一些调试后,我发现如果我点击链接一次。然后手动刷新它记录用户的页面。
答案 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。