0

我想动态更改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

谢谢

4

2 回答 2

0

我认为您可以使用路由约束来决定将哪个路由用作回调。

基本上,约束返回 true 或 false,以request作为参数,因此您可能会执行以下操作:

match "/auth/:provider/callback" => "sessions#android_new", :constraints => IsAndroidConstraint
match "/auth/:provider/callback" => "sessions#new"
于 2015-02-05T11:05:54.727 回答
0

看来,这是不可能的。omniauthgem 用作 Rack 中间件,因此必须在启动时加载。

基本omniauth_authorize_path没用。它只是在那里,因此您可以以 Rails 方式很好地创建路径,而不必编写link_to 'FB', '/auth/facebook'.

所以我最好的建议是在控制器中轻松区分这两个动作,就像我在我的应用程序中所做的那样:

def facebook
  if user_signed_in?
    bind_facebook_account
  else
    login_or_preregister
  end
end
于 2015-02-01T07:15:51.113 回答