Google authentication error: invalid_request Missing required parameter: client_id
Google authentication error: invalid_request Missing required parameter: client_id
我正在尝试在我的项目中使用 omniauth-google-oauth2 gem 进行 google 身份验证,但我迷路了遵循 link localhost:3000/auth/google_oauth2/.
时出现以下错误
这是为什么?
config/initializers/omniauth.rb
Rails.application.config.middleware.use OmniAuth::Builder do
provider :google_oauth2, ENV["GOOGLE_CLIENT_ID"], ENV["GOOGLE_CLIENT_SECRET"]
end
config/routes.rb
Rails.application.routes.draw do
get '/auth/:provider/callback', to: 'sessions#create'
root to: 'welcome#index'
end
config/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"] %>
您的 ENV-variable GOOGLE_CLIENT_ID
似乎没有设置,试试这个。
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_client_secret
end
您的示例不起作用的原因是您没有将 ENV["GOOGLE_CLIENT_ID"]
设置为任何值。要设置 ENV-variables(在 Linux 中),您可以在控制台上执行以下任一操作
export GOOGLE_CLIENT_ID=my_client_id
然而,这只会在该会话中设置变量,要使其永久化,您必须编辑 ~/.bash_profile
$ vi ~/.bash_proflle
并在该文件中添加上面的行。
如何访问 secrets.yml
中的变量?
当您将信息添加到 config/secrets.yml
文件时,可以使用
访问它们
Rails.application.secrets.my_key_name
我想将我的 ENV-variable 存储在 YML 文件中
为此,您可以使用 Figaro gem
将 gem 添加到您的 gem 文件
gem "figaro"
进行捆绑安装
$ bundle exec figaro install
这将添加文件 config/application.yml
(您应该将其添加到 .gitignore
)
在那里你可以添加你的 ENV-variables
# config/application.yml
google_client_id: "this is my google id"
google_client_secret: "this is my client secret"
之后,您只需使用
即可访问您的 client_id
ENV["GOOGLE_CLIENT_ID"]
关注如下:
https://richonrails.com/articles/google-authentication-in-ruby-on-rails/
设置代码后,使用下面的命令启动服务器,在此处输入代码
$ GOOGLE_KEY=yourgooglekey GOOGLE_SECRET=yourgooglesecret bundle exec rails s
希望对您有所帮助。
我正在尝试在我的项目中使用 omniauth-google-oauth2 gem 进行 google 身份验证,但我迷路了遵循 link localhost:3000/auth/google_oauth2/.
时出现以下错误这是为什么?
config/initializers/omniauth.rb
Rails.application.config.middleware.use OmniAuth::Builder do
provider :google_oauth2, ENV["GOOGLE_CLIENT_ID"], ENV["GOOGLE_CLIENT_SECRET"]
end
config/routes.rb
Rails.application.routes.draw do
get '/auth/:provider/callback', to: 'sessions#create'
root to: 'welcome#index'
end
config/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"] %>
您的 ENV-variable GOOGLE_CLIENT_ID
似乎没有设置,试试这个。
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_client_secret
end
您的示例不起作用的原因是您没有将 ENV["GOOGLE_CLIENT_ID"]
设置为任何值。要设置 ENV-variables(在 Linux 中),您可以在控制台上执行以下任一操作
export GOOGLE_CLIENT_ID=my_client_id
然而,这只会在该会话中设置变量,要使其永久化,您必须编辑 ~/.bash_profile
$ vi ~/.bash_proflle
并在该文件中添加上面的行。
如何访问 secrets.yml
中的变量?
当您将信息添加到 config/secrets.yml
文件时,可以使用
Rails.application.secrets.my_key_name
我想将我的 ENV-variable 存储在 YML 文件中
为此,您可以使用 Figaro gem
将 gem 添加到您的 gem 文件
gem "figaro"
进行捆绑安装
$ bundle exec figaro install
这将添加文件 config/application.yml
(您应该将其添加到 .gitignore
)
在那里你可以添加你的 ENV-variables
# config/application.yml
google_client_id: "this is my google id"
google_client_secret: "this is my client secret"
之后,您只需使用
即可访问您的 client_idENV["GOOGLE_CLIENT_ID"]
关注如下:
https://richonrails.com/articles/google-authentication-in-ruby-on-rails/
设置代码后,使用下面的命令启动服务器,在此处输入代码
$ GOOGLE_KEY=yourgooglekey GOOGLE_SECRET=yourgooglesecret bundle exec rails s
希望对您有所帮助。