设计官方wiki for omniauth与facebook无法正常工作?

时间:2012-03-13 05:12:48

标签: ruby-on-rails devise

我跟着设计官方维基通过omniauth整合设计与facebook。

我可以使用我的Facebook帐户登录,但不知何故,我无法保存facebook的omniauth回调中的其他数据。

请注意,我确实复制了this guide

上的所有内容

请查看我当前的user.rb

class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :token_authenticatable, :encryptable, :confirmable, :lockable, :timeoutable 
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable,
         :omniauthable

  # Setup accessible (or protected) attributes for your model
  attr_accessible :email, :password, :password_confirmation, :remember_me, 
                  :fb_raw

  def self.find_for_facebook_oauth(access_token, signed_in_resource=nil)
    data = access_token.extra.raw_info
    if user = User.where(:email => data.email).first
      user
    else # Create a user with a stub password. 
      User.create!(:email => data.email, :password => Devise.friendly_token[0,20]) 
    end
  end

  def self.new_with_session(params, session)
    super.tap do |user|
      if data = session["devise.facebook_data"] && \
          session["devise.facebook_data"]["extra"]["raw_info"]
        # Here you can save all the info you want including networks and education 
        user.email = data["email"]
        user.fb_raw = data['raw_info']
      end
    end
  end

end

这里的问题是self.new_with_session是从不调用。我在super.tab之前放置了一个抛出异常条款来证明我的假设。

有没有人知道这方面的工作?

1 个答案:

答案 0 :(得分:0)

new_with_session呼叫DeviseRegistrationController,因此它不在OmniauthCallbacksController中,因此在Facebook登录期间永远不会被呼叫是正常的。