如何通过 Omniauth/Facebook 登录请求传递参数?

How can I pass parameters through a Omniauth/Facebook login request?

我整合了omniauth-facebook gem with devise。我注册并登录以工作,但我无法弄清楚如何将其他参数传递给 RegistrationsController 中的 facebook 回调方法,例如 url 用户启动了注册过程上。

我在初始 url 中包含的参数(例如,localhost:3000/auth/facebook?url="url")没有传递到我的注册控制器中的 facebook 方法。

erb link

<%= link_to "fb", facebook_omniauth_path(url: "url") %>

路线

get 'auth/facebook', as: 'facebook_omniauth'
get 'auth/facebook/callback' => 'registrations#facebook'

控制器

  def facebook
    @user = User.from_omniauth(request.env["omniauth.auth"])
    if @user.persisted?
      redirect_to root_path
    else
      session["devise.facebook_data"] = request.env["omniauth.auth"]
      redirect_to new_user_registration_url
    end
  end

有人知道如何在我的 facebook 方法中使用 url 参数吗?

omniauth.auth默认不显示附加参数。您需要使用 omniauth.params 来检索 url 值,如下所示。

request.env["omniauth.params"]["url"]