来自omniauth初始化程序中来自environment.rb的环境变量

时间:2013-11-24 23:43:12

标签: ruby-on-rails ruby-on-rails-4 omniauth

我无法读取我在omniauth的environment.rb文件中定义的变量。

这是我的代码:

的environment.rb

ENV['LINKEDIN_KEY'] = "key"
ENV['LINKEDIN_SECRET'] = "secret"

omniauth.rb初始化程序

OmniAuth.config.logger = Rails.logger

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :linkedin, ENV['linkedin_key'], ENV['linkedin_secret']
end

这只适用于我,如果我硬编码密钥和秘密。 我正在使用Rails 4和Ruby 2。

在omniauth的主要例子中,他们以相同的方式使用它:

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :developer unless Rails.env.production?
  provider :twitter, ENV['TWITTER_KEY'], ENV['TWITTER_SECRET']
end

我会喜欢一些帮助。感谢。

2 个答案:

答案 0 :(得分:3)

案例可能是中间件中的问题:

provider :linkedin, ENV['linkedin_key'], ENV['linkedin_secret']

在你的environment.rb中你使用大写:

ENV['LINKEDIN_KEY'] = "key"
ENV['LINKEDIN_SECRET'] = "secret"

我还建议您查看dotenv来管理环境数据 - 它会保留源控件中的敏感信息。

答案 1 :(得分:2)

搜索新的动态提供程序策略omniauth建议使用我找到此页面: https://github.com/intridea/omniauth/wiki/Setup-Phase

所以我的代码改为:

SETUP_PROC = lambda do |env|
  env['omniauth.strategy'].options[:consumer_key] = ENV['LINKEDIN_KEY']
  env['omniauth.strategy'].options[:consumer_secret] = ENV['LINKEDIN_SECRET']
end

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :linkedin, setup: SETUP_PROC
end

它有效!