Ruby on rails 使用Omniauth gem初始化后更改Twitter提供程序

Ruby on rails 使用Omniauth gem初始化后更改Twitter提供程序,ruby-on-rails,twitter,omniauth,Ruby On Rails,Twitter,Omniauth,我使用Omniauth在Twitter上进行身份验证,但我有两个应用程序注册了不同的名称,我想根据当前localesession范围使用它们 因此,在用户调用auth/twitter之前,我需要更改omniauth.rb文件中定义的提供者密钥和机密。我想做一个before_过滤器,但auth/twitter是twitter的外部链接,不是一个常规操作,也不是一种配置omniauth以按区域设置定义提供者的方法,而不是为整个应用程序范围定义提供者的方法 那我该怎么做呢?有什么想法吗?您需要在omn

我使用Omniauth在Twitter上进行身份验证,但我有两个应用程序注册了不同的名称,我想根据当前localesession范围使用它们

因此,在用户调用auth/twitter之前,我需要更改omniauth.rb文件中定义的提供者密钥和机密。我想做一个before_过滤器,但auth/twitter是twitter的外部链接,不是一个常规操作,也不是一种配置omniauth以按区域设置定义提供者的方法,而不是为整个应用程序范围定义提供者的方法


那我该怎么做呢?有什么想法吗?

您需要在omniauth builder中将设置设置为true

  Rails.application.config.middleware.use OmniAuth::Builder do
    provider :twitter , :setup => true
  end
然后将addfollowing设置为routes.rb文件,以定义将调用哪个路由进行设置

  get '/people/auth/twitter/setup' => 'sessions#twitter_setup' #needed for devise setup phase hook to work
def twitter_setup
  request.env['omniauth.strategy'].options[:consumer_key] = YOUR_DYNAMIC_KEY
    request.env['omniauth.strategy'].options[:consumer_secret] = YOUR_DYNAMIC_SECRET_KEY
    render :plain => "Setup complete.", :status => 404
end
之后,只需在会话控制器中设置满足设置路由的omniauth策略

  get '/people/auth/twitter/setup' => 'sessions#twitter_setup' #needed for devise setup phase hook to work
def twitter_setup
  request.env['omniauth.strategy'].options[:consumer_key] = YOUR_DYNAMIC_KEY
    request.env['omniauth.strategy'].options[:consumer_secret] = YOUR_DYNAMIC_SECRET_KEY
    render :plain => "Setup complete.", :status => 404
end

这将使您能够加载所需的应用程序

这应该足以让您找到正确的方向:我知道Omniauth是一个机架中间件,如何通过env变量访问它?