在Rails中找不到Google Oauth2客户端ID

时间:2018-03-08 03:08:35

标签: ruby-on-rails ruby api oauth-2.0 calendar

我尝试使用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的下载代码。

1 个答案:

答案 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键是小写的,但我想这只是个人偏好。