Google身份验证错误:invalid_request缺少必需参数:client_id

时间:2016-01-15 12:09:04

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4 authentication oauth-2.0

我试图在我的项目中使用 omniauth-google-oauth2 gem进行Google身份验证,并且在关注链接 localhost时发现了以下错误: 3000 / AUTH / google_oauth2 /

enter image description here

为什么?

配置/初始化/ omniauth.rb

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :google_oauth2, ENV["GOOGLE_CLIENT_ID"], ENV["GOOGLE_CLIENT_SECRET"]
end

配置/ routes.rb中

Rails.application.routes.draw do
  get '/auth/:provider/callback', to: 'sessions#create'

  root to: 'welcome#index'
end

配置/ secrets.yml

development:
  secret_key_base: here_goes_my_secret_key_base
  google_client_id: 283155193283-8hnfdph0n4089iql70dh8g7428d258qc.apps.googleusercontent.com
  google_client_secret: xHnbKtackWe4D_1mrWTbRS9f

test:
  secret_key_base: here_goes_my_secret_key_base

production:
  secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
  google_client_id: <%= ENV["GOOGLE_CLIENT_ID"] %>
  google_client_secret: <%= ENV["GOOGLE_CLIENT_SECRET"] %>

2 个答案:

答案 0 :(得分:2)

看起来你的ENV变量Rails.application.config.middleware.use OmniAuth::Builder do provider :google_oauth2, Rails.application.secrets.google_client_id, Rails.application.secrets.google_client_secret end 没有设置,试试这个。

<强>配置/初始化/ omniauth.rb

ENV["GOOGLE_CLIENT_ID"]

您的示例无效的原因是您没有将export GOOGLE_CLIENT_ID=my_client_id 设置为任何值。要设置ENV变量(在Linux中),您可以在控制台上执行以下任何操作

$ vi ~/.bash_proflle

然而,这只会在该会话中设置变量,为了使这个永久化你必须编辑你的〜/ .bash_profile

secrets.yml

并在该文件中添加上面的行。

如何访问config/secrets.yml中的变量?

当您向Rails.application.secrets.my_key_name 文件添加信息时,可以使用

访问它们
gem "figaro"

我想将我的ENV变量存储在YML文件中

为此,您可以使用Figaro gem

将gem添加到gemfile

$ bundle exec figaro install

捆绑安装

config/application.yml

这会添加文件.gitignore(您应该将其添加到# config/application.yml google_client_id: "this is my google id" google_client_secret: "this is my client secret"

在那里你可以添加你的ENV变量

ENV["GOOGLE_CLIENT_ID"]

在此之后,您只需使用

即可访问您的client_id
<div>[myTitle]</div>
<div>[myContent]</div>

答案 1 :(得分:0)

跟随下面:

https://richonrails.com/articles/google-authentication-in-ruby-on-rails/

设置代码后,使用bellow命令在此处输入代码

启动服务器
$ GOOGLE_KEY=yourgooglekey GOOGLE_SECRET=yourgooglesecret bundle exec rails s

我希望这会有所帮助。