0

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

这是我的中间件代码

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

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

 end

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

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

(IE)

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

 provider :twitter, "consumer_key" , "consumer_secret"

 end

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

4

2 回答 2

3

您需要使用设置阶段

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
于 2013-10-04T07:15:30.843 回答
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
于 2013-10-04T07:14:47.957 回答