在尝试访问'/ 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
答案 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
您还可以从代码中删除以下内容:
omniauth
中的Gemfile
宝石。
require "omniauth-facebook"
文件中的devise.rb
声明。
omniauth_providers: [:facebook]
文件中的user.rb
哈希。