我正在通过Ryan Bates railscast#235 OmniAuth Part 1进行工作,使用OmniAuth gem允许用户使用Twitter或Facebook和更高版本的Google Apps登录到我的Web应用程序。

现在我遇到这个错误

Routing Error

No route matches [GET] "/auth/twitter"


我已经正确设置了route.rb文件来处理auth回调提供程序匹配,如下所示:

  match "/auth/:provider/callback" => "authentications#create"


当我链接到localhost:3000 / auth / twitter时,出现此错误。正如Bates在-07:36在Railscast中一样。

有什么可能解决此问题的方法? route.rb是否有问题?还是omniauth.rb?

我们的omniauth.rb看起来像这样:

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :facebook, 'OURCONSUMERKEY', 'OURCONSUMERSECRET'
  provider :twitter,  'OURCONSUMERKEY', 'OURCONSUMERSECRET'
end

最佳答案

您需要在Devise gem使用的模型中注释掉':omniauthable'(通常是模型'User'= user.rb文件):

class User < ActiveRecord::Base
  devise :database_authenticatable, :registerable, :recoverable,
         :rememberable, :trackable, :validatable # plus whatever other calls...
       # :omniauthable

  [...]

end


使用':omniauthable'调用意味着加载devise / omniauth组件(这会导致与omniauth设置发生冲突)。

关于ruby-on-rails - OmniAuth路由错误,没有路由匹配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9153409/

10-13 07:29