我无法读取我在omniauth的environment.rb文件中定义的变量。
这是我的代码:
ENV['LINKEDIN_KEY'] = "key"
ENV['LINKEDIN_SECRET'] = "secret"
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
我会喜欢一些帮助。感谢。
答案 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
它有效!