我正在通过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/