0

我整合了omniauth-facebook宝石与devise。我注册并登录后,但我无法弄清楚如何将其他参数传递给RegistrationsController中的facebook回调方法,例如用户开始注册过程的url。如何通过Omniauth/Facebook登录请求传递参数?

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

ERB链接

<%= 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参数吗?

回答

2

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

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

有它!我可以问你在哪里了解到这一点?在文档中我找不到任何关于此的内容。 –

+1

它没有正确记录。我通过研究一些SO的答案来了解它。 – Pavan