【问题标题】:Devise skip user confirmation for facebook does not work为facebook设计跳过用户确认不起作用
【发布时间】:2014-04-02 13:30:35
【问题描述】:

为 facebook 设计跳过用户确认不起作用。它继续发送电子邮件。

app/models/user.rb

def self.find_for_facebook_oauth(auth, signed_in_resource = nil)
    user = User.where(:provider => auth.provider, :uid => auth.uid).first
    if user
      return user
    else
      registered_user = User.where(:email => auth.info.email).first
      if registered_user
        return registered_user
      else
        user = User.create(name:auth.extra.raw_info.name,
                            provider:auth.provider,
                            uid:auth.uid,
                            email:auth.info.email,
                            password:Devise.friendly_token[0,20]
                          )
        user.skip_confirmation!
        user
      end
    end
  end

我怎样才能避免这种情况?

【问题讨论】:

    标签: ruby-on-rails facebook ruby-on-rails-4 oauth devise


    【解决方案1】:

    这应该可行:

    def self.find_for_facebook_oauth(auth, signed_in_resource = nil)
      user = User.where(:provider => auth.provider, :uid => auth.uid).first
      if user
        return user
      else
        registered_user = User.where(:email => auth.info.email).first 
    
        return registered_user if registered_user
    
        user = User.new(
                       name:auth.extra.raw_info.name,
                       provider:auth.provider,
                       uid:auth.uid,
                       email:auth.info.email,
                       password:Devise.friendly_token[0,20]
               )
          user.skip_confirmation!
          user.save
          user
        end
      end
    end
    

    您需要在保存记录前致电skip_confirmation!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多