FB.login()
。预期弹出对话框,但是当用户完成Facebook登录(和/或授权应用程序)后,对话框不会关闭。相反,它会加载一个白色页面(在对话框内),标题更改为XD Proxy。这只发生在Google Chrome上(我正在使用适用于Windows 7的最新版本)。
如果Chrome处于隐身模式,则不会发生此情况。
fb-login“社交插件”在Chrome上运行良好。
为了进一步测试/调试此问题,我创建了一个新的Facebook应用程序,其中设置只有站点URL。以下是可以用来重新创建此错误的HTML代码。
重现问题的示例代码
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Chrome Bug Test</title>
</head>
<body>
<button onclick="dologin()">Login using Facebook</button>
<div id="fb-root"></div>
<script src="http://connect.facebook.net/en_US/all.js"></script>
<script>
FB.init({
appId : '[YOUR APP ID HERE]',
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true // parse XFBML
});
</script>
<script type="text/javascript">
function dologin(){
FB.login(function(r){
if(console && console.log) {
console.log(r);
}
});
}
</script>
</body>
</html>
我尝试更改的Facebook设置
- 设置网站域名,但没有改变任何内容。
- 使用自定义channelUrl和channel文件,也没有帮助。
在Facebook上跟踪的相关错误
- http://bugs.developers.facebook.net/show_bug.cgi?id=14789
- https://github.com/facebook/connect-js/issues/269
- http://bugs.developers.facebook.net/show_bug.cgi?id=12112
- http://developers.facebook.com/bugs/278247488872084
这里在Stack Overflow上的相关问题
- FB Connect 弹出窗口空白
- Chrome 上的 Facebook Connect 弹出窗口空白
- Facebook Connect 登录在 Chrome 和 Safari 中重定向
- FB Connect JS SDK 授权后出现空白页面
- Facebook Connect 在 Internet Explorer 8 中登录时显示空白弹出窗口
- 使用 Fb.login 在 IE 中登录时,Facebook 登录弹出窗口保持打开状态
- JS SDK FB.login() 正常工作,但登录后弹出窗口仍然保持打开状态
- 通过 Chrome Web Store 安装页面时,Facebook 登录卡在 "XD Proxy" 处
- XD Proxy Facebook
- XD_Proxy 弹出窗口无法关闭
我看到很多人遇到这个问题,但令我困扰的是,我还没有找到一个确定的解决方案。Facebook 还没有回应 bug 报告。一种解决方案是摆脱基于 Javascript 的身份验证代码,只使用服务器端机制(Facebook PHP SDK)。由于时间限制,我想避免这种方法。
有人有什么想法如何解决这个问题吗?
doLogin()
函数的第一行添加event.preventDefault()
。 - Raptor