在IE9中使用FB连接登录失败

时间:2013-06-13 15:11:13

标签: ruby-on-rails-3 facebook omniauth

我正在使用Facebook应用,用户必须登录(使用FB)才能参加。 这适用于除IE9之外的每个浏览器,在应用程序尝试登录后,用户会收到错误“此内容无法在框架中显示”

IE9 doing it's thing

如果我检查iframe的属性,我可以看到网址为http://myfancyapp.com/auth/facebook/callback

登录过程似乎有效,因为我可以在iframe外面打开应用程序并且我已成功登录。所以问题似乎是IE9的安全策略。经过一番搜索,我发现它需要P3P标签,所以我在application_controller中添加了一些像这样:

p3p headers

我也尝试过添加X-Frame-Options,但它没有什么区别。我还能尝试什么?

1 个答案:

答案 0 :(得分:0)

事实证明,Omniauth以错误的方式重定向,它试图将绝对URL放在iframe中。由于绝对URL来自Facebook,因为不允许在iframe中加载facebook URL,所以它会出错。

为了解决这个问题,我修改了Omniauth初始化程序(omniauth.rb)并指定了完整的主机,如下所示:

Rails.application.config.middleware.use OmniAuth::Builder do
    provider :facebook, ENV['APP_ID'], ENV['APP_SECRET'], scope: 'email', full_host:ENV['FULL_HOST_URL']
end

完整主机​​存储在类似

的环境中
FULL_HOST_URL='//myapp.provider.com'