我在我的网络应用程序中使用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
我的第一种方法出了什么问题?
答案 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