我是关于Facebook身份验证的新手,并且遇到了重定向问题。我使用Rails 3.2.6实现了我的应用程序,并使用omniauth-facebook 1.4.0与Facebook集成。在我的网站上“与Facebook一起唱歌”,但是,画布认证不能按预期工作。
期望:
实际结果:
用户身份验证有效,但我的应用页面会重定向到iframe之外。
Facebook应用程序设置如下。画布URL设置为“/ auth / facebook /”以立即对用户进行身份验证。 (我添加了空格以避免喜欢无效域)
使用Facebook登录站点URL的网站:http:// localhost:3000 /
Canvas URL:http:// localhost:3000 / auth / facebook /
Rails.application.config.middleware.use OmniAuth::Builder do
provider :facebook, FB_APP_ID, FB_APP_SECRET, {:image_size => 'large', :iframe => true, :client_options => {:ssl => {:ca_file => Rails.root.join('lib/assets/cacert.pem').to_s}}}
end
class SessionsController < ApplicationController def create
auth = Auth.from_omniauth(env["omniauth.auth"])
session[:user_id] = auth.id
redirect_to root_url end
def destroy
session[:user_id] = nil
redirect_to root_url end end
提前致谢!
答案 0 :(得分:1)
解决这个问题的简单方法是检测用户是否在一个框架内,如果不是,则将它们反弹到Facebook。我使用以下JavaScript在我的Facebook Apps中执行此操作:
<script type="text/javascript">
if ( top === self ) {
window.top.location = '{fb_canvas_url}';
}
</script>