Ruby on rails 缺少必需的客户端标识符-Google日历
我遵循本教程在Rails应用程序上实现google日历。 config/initializer/omiauth.rbRuby on rails 缺少必需的客户端标识符-Google日历,ruby-on-rails,Ruby On Rails,我遵循本教程在Rails应用程序上实现google日历。 config/initializer/omiauth.rb Rails.application.config.middleware.use OmniAuth::Builder do provider :google_oauth2, ENV['my_long_key'], ENV['my_other_key'], { scope: "userinfo.email, ca
Rails.application.config.middleware.use OmniAuth::Builder do
provider :google_oauth2,
ENV['my_long_key'],
ENV['my_other_key'],
{ scope: "userinfo.email, calendar" }
end
class ExampleController < ApplicationController
before_action :authenticate_candidate!, except: [:redirect]
before_action :authenticate_interviewer!, except: [:client_options]
def redirect
client = Signet::OAuth2::Client.new(client_options)
redirect_to client.authorization_uri.to_s
end
private
def client_options
{
client_id: ENV["google_client_id"],
client_secret: ENV["google_client_secret"],
authorization_uri: "https://accounts.google.com/o/oauth2/auth",
token_credential_uri: "https://accounts.google.com/o/oauth2/token",
scope: Google::Apis::CalendarV3::AUTH_CALENDAR,
redirect_uri: callback_url
}
end
end
我还生成了config/secrest.yml(它不存在):
控制器/example_controller.rb
Rails.application.config.middleware.use OmniAuth::Builder do
provider :google_oauth2,
ENV['my_long_key'],
ENV['my_other_key'],
{ scope: "userinfo.email, calendar" }
end
class ExampleController < ApplicationController
before_action :authenticate_candidate!, except: [:redirect]
before_action :authenticate_interviewer!, except: [:client_options]
def redirect
client = Signet::OAuth2::Client.new(client_options)
redirect_to client.authorization_uri.to_s
end
private
def client_options
{
client_id: ENV["google_client_id"],
client_secret: ENV["google_client_secret"],
authorization_uri: "https://accounts.google.com/o/oauth2/auth",
token_credential_uri: "https://accounts.google.com/o/oauth2/token",
scope: Google::Apis::CalendarV3::AUTH_CALENDAR,
redirect_uri: callback_url
}
end
end
但是
当我去:
我得到:缺少所需的客户端标识符。
最有可能的是,您的google凭据中的env变量没有传递到进程(即
env[“google\u client\u id”]
或者其他变量)谢谢,我如何验证它们是否已传递?如果我从example\u controller
中放入client
,我会得到以下结果:。…}>
您可以使用put“google\u client\u id:{ENV[“google\u client\u id”]}
例如,如果控制台中为空,那么它就不会传递到我应该放在哪个文件中config/initializer/omiauth.rb
?您可以将其放在def client_options
方法的第一行,但通常是在Rails过程中执行的任何文件中