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

时间:2012-02-20 18:39:48

标签: ruby-on-rails omniauth

我有

gem 'omniauth-google_oauth2'

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

  

红宝石1.9.3-P0 /宝石/ omniauth-1.0.2 / LIB / omniauth / builder.rb:33:在   `在提供商中救援':无法找到匹配策略   :google_oauth2。您可能需要安装额外的gem(例如   omn​​iauth-google_oauth2)。 (LoadError)

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

3 个答案:

答案 0 :(得分:11)

使用

gem 'omniauth-google-oauth2'  

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

答案 1 :(得分: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

答案 2 :(得分:0)

使用Ben W的解决方案使服务器可以启动,但搞砸了我的路线。我在config/initializers/omniauth.rb

中使用了这个
:google_oauth2, "[KEY]", "[SECRET]"

我的google身份验证路径是/auth/google_oauth2