我在Rails 4应用程序中使用Devise 3.5和Omniauth。我创建了一个与Facebook的集成,允许用户将他们的Facebook帐户连接到我的应用程序。目前,当用户点击连接按钮时,它们被发送到/user/auth/facebook
,然后重定向到Omniauth生成的回调URL:/user/auth/facebook/callback
。我想在某些情况下手动覆盖此回调网址 - 这意味着我不想在初始化程序中覆盖它 - 具有完全合格的网址。例如,如果用户从http://www.example.com/
开始,我可能想用http://app.example.com/user/auth/facebook/callback
覆盖默认的回调网址。Devise/OmniAuth覆盖默认回调网址
我的应用程序具有动态子域,用户将(几乎)始终开始子域上的身份验证过程。不幸的是,Facebook似乎并不支持oauth重定向网址中的通配符,这就是为什么我希望能够检测用户是否在子域上,并将回调网址调整为我已在我的Facebook应用上列入白名单的内容,以便授权过程成功。
从我读到的,url helper omniauth_authorize_path
接受附加参数作为参数传递。我试图通过一个定制的回调路径像这样,但没有成功:
user_omniauth_authorize_path(:facebook, callback_path: @custom_callback)
我也试着改变callback_path
到redirect_url
和redirect_uri
,但似乎没有任何工作。当我查看生成的链接时,确实将回调作为参数包含在url中,但是当我单击该链接时,我将重定向回默认回调url而不是自定义回调url。
我需要这个功能太:( – diogopms