我尝试使用rails连接到Google Calendar API,但它一直告诉我Missing required parameter: client_id
任何人都可以告诉我我做错了什么?
代码:
omniauth.rb
Rails.application.config.middleware.use OmniAuth::Builder do
provider :google_oauth2, ENV['GOOGLE_CLIENT_ID'], ENV['GOOGLE_SECRET_KEY'],
{
scope: 'https://www.googleapis.com/auth/calendar, hidden@gmail.com'
}
end
secrets.yml
development:
secret_key_base: xxxxxxxxx
GOOGLE_CLIENT_ID: xxxxxxx
GOOGLE_SECRET_KEY: xxxxx
test:
secret_key_base: xxxxxxx
production:
secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
development.rb
GOOGLE_CLIENT_ID = Rails.application.secrets.GOOGLE_CLIENT_ID
GOOGLE_SECRET_KEY = Rails.application.secrets.GOOGLE_SECRET_KEY
我还有一个client_secrets.json文件,其中包含来自Google的下载代码。
答案 0 :(得分:0)
正如其他人所说,我建议你重新生成新的秘密:每个人仍然可以使用SO中的编辑选项查看你的密钥。
但是要回答你的问题,没有必要通过使用全局变量进行某种传递,你只需在omniauth初始化器(config/initializers/omniauth.rb
)中访问你的秘密:
Rails.application.config.middleware.use OmniAuth::Builder do
provider :google_oauth2, Rails.application.secrets.GOOGLE_CLIENT_ID, Rails.application.secrets.GOOGLE_SECRET_KEY
end
我希望您在config/secrets.yml
文件中的缩进是偶然的,development:
应该在其值之前的制表符/双空格中:
development:
secret_key_base: xxxxxxxxx
GOOGLE_CLIENT_ID: xxxxxxx
GOOGLE_SECRET_KEY: xxxxx
production:
secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
GOOGLE_CLIENT_ID: <%= ENV["GOOGLE_CLIENT_ID"] %>
GOOGLE_SECRET_KEY: <%= ENV["GOOGLE_SECRET_KEY"] %>
我个人认为我的YAML键是小写的,但我想这只是个人偏好。