我正在使用Facebook应用,用户必须登录(使用FB)才能参加。 这适用于除IE9之外的每个浏览器,在应用程序尝试登录后,用户会收到错误“此内容无法在框架中显示”
如果我检查iframe的属性,我可以看到网址为http://myfancyapp.com/auth/facebook/callback
登录过程似乎有效,因为我可以在iframe外面打开应用程序并且我已成功登录。所以问题似乎是IE9的安全策略。经过一番搜索,我发现它需要P3P标签,所以我在application_controller中添加了一些像这样:
我也尝试过添加X-Frame-Options,但它没有什么区别。我还能尝试什么?
答案 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'