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

时间:2012-06-27 16:59:12

标签: ruby-on-rails twitter omniauth

我正在使用Omniauth在Twitter上进行身份验证,但我有2个应用程序注册了不同的名称,我想在当前区域设置(会话范围)上使用这些名称。

所以我需要在用户调用auth / twitter之前更改omniauth.rb文件中定义的提供者密钥和秘密(我想做一个before_filter但是auth / twitter是twitter的外部链接而不是常规操作)或者一种配置Omniauth以按语言环境定义提供程序而不是为整个应用程序范围定义的方法。

那我怎么能这样做?有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您需要做的是在omniauth builder

中将setup设置为true
  Rails.application.config.middleware.use OmniAuth::Builder do
    provider :twitter , :setup => true
  end

然后在routes.rb文件中添加以下内容,以定义将为setup

调用哪条路径
  get '/people/auth/twitter/setup' => 'sessions#twitter_setup' #needed for devise setup phase hook to work

之后,只需在会话控制器中设置符合设置路径的omniauth策略

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

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