没有路线匹配[GET]“/ auth / twitter /”

时间:2013-12-18 12:31:07

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4 omniauth

在尝试访问'/ auth / twitter'时,我遇到了经典的omniauth问题。

其他解决方案存在的问题是我无法删除:omniauthable from user.rb,因为facebook身份验证不起作用。

此外,如果我删除下面的设计行,则Twitter身份验证有效。似乎twitter和facebook与omniauth之间存在兼容性问题,是否有人有解决方案?

由于

devise.rb

require "omniauth-facebook"
config.omniauth :facebook, FACEBOOK_APP_ID, FACEBOOK_APP_SECRET

的Gemfile

# Users from facebook
gem 'omniauth'
gem 'omniauth-facebook'

omniauth.rb

OmniAuth.config.logger = Rails.logger 

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :twitter, TWITTER_CONSUMER_KEY, TWITTER_CONSUMER_SECRET
end

模型/ user.rb

class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable, 
         :confirmable, :omniauthable, omniauth_providers: [:facebook]
end

1 个答案:

答案 0 :(得分:1)

当您将OmniAuth与Devise一起使用时,您必须在devise.rb文件中配置OmniAuth提供程序。

所以你应该像配置omniauth-twitter gem一样配置omniauth-facebook gem:

Devise.setup do |config|
  config.omniauth :facebook, "FACEBOOK_KEY", "FACEBOOK_SECRET"
  config.omniauth :twitter, "TWITTER_KEY", "TWITTER_SECRET"
end

您还可以从代码中删除以下内容:

  1. omniauth中的Gemfile宝石。

  2. require "omniauth-facebook"文件中的devise.rb声明。

  3. omniauth_providers: [:facebook]文件中的user.rb哈希。