2013-12-18 41 views
0

我嘗試訪問'/ auth/twitter'時遇到了一個經典的omniauth問題。沒有路線匹配[GET]「/ auth/twitter /」

其他解決方案的問題是我無法從user.rb中刪除:omniauthable,因爲facebook身份驗證不起作用。

此外,如果我刪除下面的設計行,Twitter認證的作品。似乎在使用omniauth twitter和facebook之間存在兼容性問題,是否有人有解決方案?

感謝

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

當您使用OmniAuth與設計,必須在devise.rb文件中配置OmniAuth提供商。

所以,你應該配置omniauth-twitter寶石像你已經配置omniauth-facebook寶石:

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

您也可以刪除您的代碼如下:

  1. omniauth寶石在你Gemfile

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

  3. omniauth_providers: [:facebook]散列在您的user.rb文件中。

+0

感謝您的回答。它大部分工作,除了我將link_to [...],'auth/twitter'改爲link_to [...],user_omniauth_authorize_path(:twitter)。 – vladCovaliov