Ruby on Rails - 无法找到匹配的策略:google_oauth2

Kan*_*yan 7 ruby-on-rails omniauth

我有

gem 'omniauth-google_oauth2'
Run Code Online (Sandbox Code Playgroud)

在我的Gemfile中.捆绑安装之后也是如此.它错误地说,

ruby-1.9.3-p0/gems/omniauth-1.0.2/lib/omniauth/builder.rb:33:在`rescue in provider'中:找不到匹配的策略:google_oauth2.您可能需要安装其他gem(例如omniauth-google_oauth2).(LoadError)

我错过了什么?请任何想法.

小智 11

使用

gem 'omniauth-google-oauth2'  
Run Code Online (Sandbox Code Playgroud)

将最后一个下划线更改为连字符.


Ben*_*ing 7

问题是由OmniAuth如何对提供者名称进行渲染:

OmniAuth::Utils.camelize(:google_oauth2.to_s) => GoogleOAuth2

然而,提供者实际上是GoogleOauth2完全合格的 -OmniAuth::Strategies::GoogleOauth2

所以解决方案是使用完全限定的类: OmniAuth::Strategies::GoogleOauth2

Rails.application.config.middleware.use OmniAuth::Builder do
  provider OmniAuth::Strategies::GoogleOauth2, ENV["KEY"], ENV["SECRET"]
end
Run Code Online (Sandbox Code Playgroud)