使用 facebook 的 omniauth,我想将一些额外的参数传递给 URL,以便在回调中处理它们。
我找到了很多关于这个的文档(除了官方文档,这个,例如:Devise + Omniauth - How to pass extra parameters together?)。但是没有人为我工作。
使用:
omniauth_authorize_path(:user, :facebook, msg: 'Hello')
产生这个网址:
/users/auth/facebook?locale=fr
知道为什么它不起作用吗?谢谢。
更新:
该参数locale=fr
是因为我已要求应用程序始终locale
在 URL 中使用 a。我的application_controller.rb使用以下方法:
class ApplicationController < ActionController::Base
protect_from_forgery
before_filter :set_locale
def set_locale
I18n.locale = params[:locale] || I18n.default_locale
end
# Always add :locale parameter to URL
def url_options
{:locale => I18n.locale}.merge(super)
end
end
删除url_options方法并不能解决问题,现在给出以下 URL:
/users/auth/facebook