如何从 Devise 获取 omniauth 信息
How to get omniauth info from Devise
当我们配置 Devise 时,我们在 config/initializers/devise.rb 中输入如下内容:
config.omniauth :google_oauth2, "[client_id].apps.googleusercontent.com", "[client_secret]"
我很好奇如何在应用程序中使用此信息(client_id 和 client_secret)?
例如,
flow = Google::APIClient::InstalledAppFlow.new(
:client_id => client_secrets.client_id,
:client_secret => client_secrets.client_secret,
:scope => [YOUTUBE_READONLY_SCOPE]
)
我想从 Devise 获取此信息,而不是对其进行硬编码。
您可以在名为 google.yml
的 yml
文件中添加 client_id
和 client_secret
(例如),在 devise.rb
中您可以添加类似:
config_google = YAML.load_file("#{Rails.root}/config/google.yml")
config.omniauth :google_oauth2, config_google["client_id"], config_google["client_secret"]
如果你想在初始化程序之外使用配置,同样的事情也会发生。只需加载 yml 并使用其内容。
在 yml 中,您可以为每个环境(开发、生产等)设置不同的密钥。只需确保正确加载即可。
YAML.load_file("#{Rails.root}/config/google.yml")[Rails.env] # for example
当我们配置 Devise 时,我们在 config/initializers/devise.rb 中输入如下内容:
config.omniauth :google_oauth2, "[client_id].apps.googleusercontent.com", "[client_secret]"
我很好奇如何在应用程序中使用此信息(client_id 和 client_secret)?
例如,
flow = Google::APIClient::InstalledAppFlow.new(
:client_id => client_secrets.client_id,
:client_secret => client_secrets.client_secret,
:scope => [YOUTUBE_READONLY_SCOPE]
)
我想从 Devise 获取此信息,而不是对其进行硬编码。
您可以在名为 google.yml
的 yml
文件中添加 client_id
和 client_secret
(例如),在 devise.rb
中您可以添加类似:
config_google = YAML.load_file("#{Rails.root}/config/google.yml")
config.omniauth :google_oauth2, config_google["client_id"], config_google["client_secret"]
如果你想在初始化程序之外使用配置,同样的事情也会发生。只需加载 yml 并使用其内容。
在 yml 中,您可以为每个环境(开发、生产等)设置不同的密钥。只需确保正确加载即可。
YAML.load_file("#{Rails.root}/config/google.yml")[Rails.env] # for example