繁体   English   中英

Rails:Twitter Omniauth gem 401未经授权错误

[英]Rails: Twitter Omniauth gem 401 Unauthorized Error

我在Web应用程序中使用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

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

您需要使用安装阶段

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

您可以在development.rb和production.rb中添加consumer_key和消费者秘密

# 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM