Rails:Twitter Omniauth gem 401 Unauthorized Error

时间:2013-10-04 06:59:16

标签: ruby-on-rails twitter oauth omniauth twitter-oauth

我在我的网络应用程序中使用twitter omniauth gem。我将密钥和秘密存储在我的数据库中。

这是我的中间件代码

 Rails.application.config.middleware.use OmniAuth::Builder do

 provider :twitter, lambda { Site.config[:twitter][:key] },lambda{ Site.config[:twitter][:secret] }

 end

这会返回未经授权的错误。

但是当我直接在中间件中指定我的密钥和秘密时,它就可以工作。

(即)

 Rails.application.config.middleware.use OmniAuth::Builder do

 provider :twitter, "consumer_key" , "consumer_secret"

 end

我的第一种方法出了什么问题?

2 个答案:

答案 0 :(得分:3)

您需要使用Setup Phase

provider :twitter, :setup => true

然后在控制器中:

def setup
  request.env['omniauth.strategy'].options[:consumer_key] = Site.config[:twitter][:key]
  request.env['omniauth.strategy'].options[:consumer_secret] = Site.config[:twitter][:secret]
  render :text => "Setup complete.", :status => 404
end

路线:

match '/auth/:provider/setup' => 'sessions#setup' # for example

答案 1 :(得分:0)

您可以在development.rb和production.rb

中添加consumer_key和consumer secret
# twitter api credential
  config.twitt_consumer_key = 'xxxxxxxxxxxxxxxxx'
  config.twitt_consumer_secret = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

然后你可以使用它

provider :twitter, Rails.application.config.twitt_consumer_key, Rails.application.config.twitt_consumer_secret