2010-12-21 104 views
1

我已经将Facebook登录与我的应用程序集成在一起,并且我想在从我的应用程序注销时从Facebook注销用户。所以我做了以下:FB.logout不能在IE8中工作

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

这适用于Firefox和Chrome,但不适用于IE8。在IE8中,用户从应用程序注销,但未从Facebook注销。 任何其他人遇到此问题?

+0

您是否尝试将IE8切换至兼容模式? – systemovich 2010-12-21 23:59:24

回答

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> 
0

我发现同样的事情,也与Android浏览器。沙希德的修复工作了我,然后我意识到另一个办法是把回调函数这样内重定向:

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

如果你像我一样,你可能猜到FB.logout只是摧毁一个cookie或但它似乎做了一些Ajax调用(我想撤销服务器上的身份验证),并具有不同的执行时间,特别是在使用无线网络的移动设备上。

2000毫秒可能不一定是足够的时间完成功能,或者可能超过必要。一旦FB.logout完成后,回调函数就会执行。