0

我正在开发一个用户必须登录(使用 FB)才能参与的 facebook 应用程序。这在除 IE9 之外的所有浏览器上都可以正常工作,在应用程序尝试登录后,用户收到错误“此内容无法在框架中显示”

IE9 做事

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

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

p3p 标头

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

4

1 回答 1

0

事实证明,Omniauth 的重定向方式错误,它试图将绝对 URL 放入 iframe 中。由于绝对 URL 来自 Facebook,因此它给出了一个错误,因为 Facebook URL 不允许加载到 iframe 中。

为了解决这个问题,我修改了 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'
于 2013-06-14T13:44:28.587 回答