如何从 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.ymlyml 文件中添加 client_idclient_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