FB.logout无法在IE8中运行

时间:2010-12-21 23:52:10

标签: facebook firefox google-chrome internet-explorer-8 logout

我已将facebook登录与我的应用程序集成,我想在退出我的应用程序时从facebook注销用户。所以我做了以下事情:

<a href="<c:url value='/security_logout'/>" onclick="FB.logout();">Logout</a>

这适用于Firefox和Chrome,但不适用于IE8。在IE8中,用户已退出应用程序但未登出​​Facebook。 有其他人经历过这个吗?

2 个答案:

答案 0 :(得分:0)

请尝试这个

<script src="http://connect.facebook.net/en_US/all.js"></script>
<div id="fb-root"></div>
<script language="javascript" type="text/javascript">


        FB.init({
            appId: '205734987138498',
            status: true, // check login status
            cookie: true, // enable cookies to allow the server to access the session
            xfbml: true, // parse XFBML      
            oauth: true // enable OAuth 2.0
        });


    function handleSessionResponse(response) {
        // FB.XFBML.parse();
    }

    FB.getLoginStatus(handleSessionResponse);

//////you can optionally put the following in a seprate js file/////////

var Facebook = {}

Facebook.signout = function (url) {
    FB.logout();
    setTimeout('top.location.href = "' + url + '"', 2000);
}


</script>

<div onclick="Facebook.signout('http://www.uamplify.com');">Call your logout function now, click here</div>

答案 1 :(得分:0)

我发现了完全相同的东西以及Android浏览器。 Shahid的修复对我有用,然后我意识到另一种方法是将重定向放在回调函数中,如下所示:

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

如果你像我一样,你可能认为FB.logout只是在破坏一个cookie或者什么东西,但它似乎做了一些ajax调用(我想在服务器上撤销身份验证)并且具有不同的执行时间,特别是在移动设备上使用无线网络的设备。

2000 ms可能不一定足够时间来完成该功能,或者它可能不仅仅是必要的。一旦FB.logout在每种情况下完成,都会执行回调函数。