繁体   English   中英

使用omniauth如何动态更改回调路径

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM