【问题标题】:FB.logout not working in IE8FB.logout 在 IE8 中不起作用
【发布时间】:2011-05-29 03:35:37
【问题描述】:
我已将 facebook 登录与我的应用程序集成,我想在用户注销我的应用程序时从 facebook 注销用户。所以我做了以下事情:
<a href="<c:url value='/security_logout'/>" onclick="FB.logout();">Logout</a>
这适用于 Firefox 和 Chrome,但不适用于 IE8。在 IE8 中,用户已从应用程序中注销,但并未从 Facebook 中注销。
还有其他人遇到这种情况吗?
【问题讨论】:
标签:
facebook
firefox
google-chrome
internet-explorer-8
logout
【解决方案1】:
我在 Android 浏览器中也发现了完全相同的东西。 Shahid 的修复对我有用,然后我意识到另一种方法是将重定向放在回调函数中,如下所示:
function mysignout(url)
{
FB.logout(function()
{
top.location.href = 'url'
});
}
如果您像我一样,您可能认为 FB.logout 只是在破坏 cookie 或其他东西,但它似乎会进行一些 ajax 调用(我猜是为了撤销服务器上的身份验证)并且执行时间不同,尤其是在移动设备上使用无线网络的设备。
2000 毫秒可能不一定足以完成该功能,或者可能超过必要。在每种情况下,回调函数都会在 FB.logout 完成后执行。
【解决方案2】:
请试试这个
<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>