Login 使用JavaScript SDK登录Facebook Connect在Opera中冻结?

Login 使用JavaScript SDK登录Facebook Connect在Opera中冻结?,login,facebook,opera,Login,Facebook,Opera,我有一个Facebook Connect网站正在开发中。登录在Firefox、IE、Safari和Chrome上非常有效。但是当我使用Opera使用最新版本=11测试它时,我遇到了问题 我进入登录表单弹出窗口,填写我的电子邮件和密码,然后单击登录按钮。之后,登录窗口变为空,窗口标题为XD Proxy 我正在使用Facebook Connect JavaScript SDK,在我的解决方案中,jQuery lightbox风格插件ColorBox中显示了一些iFrame 你知道Opera和Face

我有一个Facebook Connect网站正在开发中。登录在Firefox、IE、Safari和Chrome上非常有效。但是当我使用Opera使用最新版本=11测试它时,我遇到了问题

我进入登录表单弹出窗口,填写我的电子邮件和密码,然后单击登录按钮。之后,登录窗口变为空,窗口标题为XD Proxy

我正在使用Facebook Connect JavaScript SDK,在我的解决方案中,jQuery lightbox风格插件ColorBox中显示了一些iFrame

你知道Opera和FacebookConnect是否存在问题,或者我的代码中是否存在导致此问题的原因?正如我所说的,该解决方案已经在所有其他主要浏览器中进行了测试,并在那里运行良好

提前谢谢

/托马斯


另外,在开发服务器上,我正在运行端口号为8585的站点。我在网上看到一些帖子说这会导致问题。

我找到了一个似乎有效的解决方案!如果我向FB.init添加channelUrl选项,我可以登录。我收到Opera的警告如下:

警告

公共互联网上的页面请求 来自您的私有内部网的数据。对于 出于安全原因,自动访问是必要的 已阻止,但您可以选择 继续

链接:继续

链接:数据丢失时始终继续 从我的服务器上请求的 专用内联网

我单击了“继续”链接,之后它在本次会话中正常工作。原来的FB.init行看起来像这个appId,在本例中,其他一些内容已被替换:

// Facebook init
FB.init({ appId: '123456789', status: true, cookie: true, xfbml: true });
在我添加channelUrl之后,它看起来是这样的:

// Facebook init
FB.init({ appId: '123456789', status: true, cookie: true, xfbml: true, channelUrl: "http://www.yourdomain.com/channel.html" });
文件channel.html是一个简单的文件,仅包含以下代码行:

<script src="http://connect.facebook.net/en_EN/all.js"></script>
创建它并将其放置在您在channelUrl中指定的服务器上。服务器根目录是一个好地方

下一步是找出如何摆脱Opera警告,如果可能的话

祝你好运


/托马斯·卡恩(Thomas Kahn)

我找到了一个似乎有效的解决方案!如果我向FB.init添加channelUrl选项,我可以登录。我收到Opera的警告如下:

警告

公共互联网上的页面请求 来自您的私有内部网的数据。对于 出于安全原因,自动访问是必要的 已阻止,但您可以选择 继续

链接:继续

链接:数据丢失时始终继续 从我的服务器上请求的 专用内联网

我单击了“继续”链接,之后它在本次会话中正常工作。原来的FB.init行看起来像这个appId,在本例中,其他一些内容已被替换:

// Facebook init
FB.init({ appId: '123456789', status: true, cookie: true, xfbml: true });
在我添加channelUrl之后,它看起来是这样的:

// Facebook init
FB.init({ appId: '123456789', status: true, cookie: true, xfbml: true, channelUrl: "http://www.yourdomain.com/channel.html" });
文件channel.html是一个简单的文件,仅包含以下代码行:

<script src="http://connect.facebook.net/en_EN/all.js"></script>
创建它并将其放置在您在channelUrl中指定的服务器上。服务器根目录是一个好地方

下一步是找出如何摆脱Opera警告,如果可能的话

祝你好运


/Thomas Kahn

Facebook connect当前失败,因为Facebook的脚本通过检查attachEvent方法是否受支持来检测Internet Explorer。不幸的是,Opera在历史上支持这种方法,以便与其他需要它的站点兼容。现在,如果他们这么做的话:


由于Facebook碰巧使用了一些IE代码,Opera不支持在脚本中基于Flash的部分嵌入用于跨文档消息传递的Flash,因此这种错误的伪浏览器检测导致了问题,虽然脚本的alternate window.postMessage部分存在其他问题,如此处所述:

Facebook connect当前失败,因为Facebook的脚本通过检查是否支持attachEvent方法来检测Internet Explorer。不幸的是,Opera在历史上支持这种方法,以便与其他需要它的站点兼容。现在,如果他们这么做的话:


由于Facebook碰巧使用了Opera不支持的某些IE代码,在脚本中基于Flash的部分嵌入了用于跨文档消息传递的Flash,而脚本的备用window.postMessage部分存在其他问题,如此处所述:

要在Opera中修复此问题,只需在FB.init之后添加以下内容:

if($.browser.opera ) // it uses jQuery library here!
{
   FB.XD._transport="postmessage";
   FB.XD.PostMessage.init();
}

要在Opera中修复它,只需在FB.init之后添加以下内容:

if($.browser.opera ) // it uses jQuery library here!
{
   FB.XD._transport="postmessage";
   FB.XD.PostMessage.init();
}

这个channel.html不适合我

<script src="http://connect.facebook.net/en_EN/all.js"></script>
但当我将其更改为:

<script src="http://connect.facebook.net/en_GB/all.js"></script>

它起作用了。此url中的内容无效,请转到此频道。html不适用于我

<script src="http://connect.facebook.net/en_EN/all.js"></script>
但当我将其更改为:

<script src="http://connect.facebook.net/en_GB/all.js"></script>

它起作用了。在此url中有无效内容,请转到此处

谢谢您解释背景!事实上,在我问这个问题之前,我已经发现并阅读了你的博客文章,但说实话,我并不是什么都懂
我不确定这是不是和我遇到的问题一样。正如我上面提到的,我现在有一些解决方案为Opera工作,但我得到的警告是不可取的。谢谢你解释背景!事实上,在我问这个问题之前,我已经发现并阅读了你的博客文章,但说实话,我并不了解所有的事情,也不确定这是否与我遇到的问题相同。正如我上面提到的,我现在有一些Opera的解决方案,但我得到的警告是不可取的。我尝试过这样做,但页面冻结,但在浏览器的工具栏中没有任何url,我们在那里写网站和去!对不起,我不知道英语中的确切单词。如果没有channelUrl,它会冻结,但仍然是指向facebook平台的工具栏中的一个链接。我尝试过这样做,但页面会冻结,但浏览器的工具栏中没有任何url,我们可以在那里编写网站并访问!对不起,我不知道英语中的确切单词。如果没有channelUrl,它会冻结,但仍然是指向facebook plataformI的工具栏中的一个链接。我会收到一条错误消息,上面说:参数无效。应用程序配置不允许给定URL。我必须更改任何配置设置吗?我应该在FB.init参数中保留channelUrl参数吗?@tkahn这是在Facebook应用程序设置中设置的。指定的url必须是您运行网站时使用的url。我收到一条错误消息:参数无效。应用程序配置不允许给定URL。我必须更改任何配置设置吗?我应该在FB.init参数中保留channelUrl参数吗?@tkahn这是在Facebook应用程序设置中设置的。指定的url必须是您运行网站的url。没有en_en这样的东西。你必须在en_US美式英语或en_GB脆性英语之间做出选择。您可以在这里找到完整的地区列表:没有en_en这样的东西。你必须在en_US美式英语或en_GB脆性英语之间做出选择。您可以在此处找到区域设置的完整列表: