如何通过Omniauth/Facebook登录请求传递参数?
问题描述:
我整合了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
参数吗?
答
默认情况下,omniauth.auth
不显示附加参数。您需要使用omniauth.params
来代替url
值,如下所示。
request.env["omniauth.params"]["url"]
有它!我可以问你在哪里了解到这一点?在文档中我找不到任何关于此的内容。 –
它没有正确记录。我通过研究一些SO的答案来了解它。 – Pavan