Omniauth - 动态选择提供者

时间:2013-10-23 08:38:19

标签: ruby-on-rails-4 omniauth rails-api

说我有一个宁静的资源,UserSession

> POST /user_sessions.json
{
    "user_session": {
        "user": {
            "some_key": "some_value",
            "some_other_key": "some_other_value"
        }
    }
}

我想根据提供的参数选择UserSessions#create中的提供程序,而不是使用通常使用的/auth/:provider OmniAuth。有可能这样做吗?

1 个答案:

答案 0 :(得分:1)

我正在使用一种技术将一些omniauth选项设置到用户会话中。

我想这也可能适用于您的解决方案。你仍然使用/auth/:provider路线!

所以我基本上将所有登录网址链接到我的auth_path

# routes.rb
get '/auth/login/:provider',          to: 'sessions#auth',     as: :auth

一旦我提取数据并将其放入会话中,我就会将用户重定向到正确的登录路径。在您的情况下,它需要从参数中提取数据,然后重定向:

# sessions_controller.rb
def auth
  session[:omniauth_keys] = Usergroup.omniauth_keys(params[:provider], request)
  redirect_to "/auth/#{params[:provider]}"
end