如何更改 GoogleOauth2omniauth 提供商名称?

问题描述 投票:0回答:3

我正在使用 Google Omniauth gem here,需要提供它的两个实例,以便我可以让他们请求一组不同的权限。我使用这个 guide 与等效的 Facebook gem 一起工作。做同样的事情不适用于 Google gem。有谁知道我能做些什么来实现这一点?

ruby oauth omniauth
3个回答
1
投票

晚了几年,但现在这是正确的方法:

Rails.application.config.middleware.use OmniAuth::Builder do
  provider OmniAuth::Strategies::GoogleIntegration,
           ENV["GOOGLE_CLIENT_ID"],
           ENV["GOOGLE_CLIENT_SECRET"],
           name: 'google_integration' # <=== Use the name option.
end

0
投票

好吧,我明白了。由于某种原因,Google Oauth2 gem 不使用提供程序名称作为符号,但会采用类名称。所以我可以用这个来解决这个问题:

# initializers/omniauth.rb
module OmniAuth::Strategies
  class GoogleIntegration < GoogleOauth2
  end
end

Rails.application.config.middleware.use OmniAuth::Builder do
  provider OmniAuth::Strategies::GoogleIntegration, ENV["GOOGLE_CLIENT_ID"], ENV["GOOGLE_CLIENT_SECRET"],
    {
      ...
    }
end

0
投票

我认为与 CaioEPS 相比,它不会按预期在所有地方工作,除非你这样做:

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :google_integration,
           ENV["GOOGLE_CLIENT_ID"],
           ENV["GOOGLE_CLIENT_SECRET"],
           name: :google_integration,
           strategy_class: OmniAuth::Strategies::GoogleIntegration
end

至少如果你使用 Devise

© www.soinside.com 2019 - 2024. All rights reserved.