【问题标题】:Facebook Logout ConfusionFacebook注销混乱
【发布时间】:2011-04-25 01:25:24
【问题描述】:

我有一个奇怪的问题,我有一个只有在用户登录时才会显示的注销链接。我在这个链接的 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

以前有没有其他人遇到过这个问题?任何建议都会有所帮助,谢谢!

更新:经过一些调试,我发现如果我单击链接一次。然后手动刷新将用户注销的页面。

【问题讨论】:

    标签: javascript facebook


    【解决方案1】:

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

    不妨试试这样的:

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

    【讨论】:

    • 感谢您的回复,serg,我已经尝试过了,但执行注销后仍然无法重新加载。似乎它第一次在后台将我注销,然后在第二次单击时,它意识到它没有登录以注销,如果这有意义的话。所以它会重新加载页面,一旦它重新加载我的 PHP 就会意识到它已注销并显示登录表单。
    • @Pete 但它真的会重新加载页面吗?第一次重新加载页面后不刷新页面或不注销用户的问题是什么?也许它会在服务器端重新加载后再次登录?
    • 我很确定点击链接时页面会重新加载,既然你提到了它。因为一方面它在注销后不会重定向到谷歌,而且我在 onclick 事件中将 innerhtml 更改为 Logging Out...。几秒钟后它会立即切换回注销。所以也许我需要第二次重新加载?
    • @Pete 所以用户已注销,页面已重新加载,但有些东西会再次自动登录。您是仅在 javascript 端还是在 php 端处理登录?也许您需要通知服务器端用户已通过 ajax 注销,然后重新登录页面?
    • 我认为您在这里有所收获,我确实使用 PHP 和 Javascript 处理登录。 PHP 似乎无法识别用户已注销,直到执行额外的刷新。我会尝试提醒 PHP 发生了什么 :) 非常感谢!
    【解决方案2】:

    您可以尝试在回调函数中设置警报,以查看 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。

    【讨论】:

      猜你喜欢
      • 2011-04-04
      • 1970-01-01
      • 1970-01-01
      • 2015-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多