[英]using omniauth how to change callback path dynamically
我想动态更改omniauth回调URL。 但我不知道如何动态更改。
我希望将路径放在视图上而不是配置加载时进行更改。
像这样
- if @is_android
- callback_path = omniauth_authorize_path(resource_name, "facebook", callback_path: "/resource/auth/facebook/callback/android")
- else
- callback_path = omniauth_authorize_path(resource_name, "facebook")
= link_to "sign up with facebook", fb_auth_path
谢谢
似乎不可能这样。 omniauth
gem可作为Rack中间件使用,因此必须在启动时加载。
omniauth_authorize_path
基本上是无用的。 它只是在那里,因此您可以用Rails的方式很好地创建路径,而不link_to 'FB', '/auth/facebook'
写入link_to 'FB', '/auth/facebook'
。
因此,我最好的建议是像在应用程序中一样,在控制器中轻松区分这两个动作:
def facebook
if user_signed_in?
bind_facebook_account
else
login_or_preregister
end
end
我认为您可以使用路由约束来确定要用作回调的路由。
基本上,约束将request
作为参数返回true或false,因此您可以执行以下操作:
match "/auth/:provider/callback" => "sessions#android_new", :constraints => IsAndroidConstraint
match "/auth/:provider/callback" => "sessions#new"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.