2015-11-13 2 views
0

В моем текущем приложении, которое я разрабатываю, я могу зарегистрироваться с помощью Facebook и Google+. Но когда я добавил возможность для подписания только с обычной электронной почтой, я получил эту ошибку, я буду признателен за помощь, пожалуйста ...Регистрация Rails с несколькими способами

Вот некоторые из моего кода

#SessionsController  
    def create 
    @user = User.from_omniauth(env["omniauth.auth"]) 
    # session[:user_id] = @user.id 
    # redirect_to root_path 
    @user = User.find_by_email params[:email] 
    if @user && @user.authenticate(params[:password]) 
     session[:user_id] = @user.id 
     redirect_to root_path 
    else 
     flash[:alert] = "Wrong email or password" 
     render :new 
    end 
    end 



#user.rb 
    class User < ActiveRecord::Base 
    has_secure_password 

    def self.from_omniauth(auth) 
    where(provider: auth.provider, uid: auth.uid).first_or_create do |user| 
    user.provider   = auth.provider 
    user.uid    = auth.uid 
    user.name    = auth.info.name 
    user.email   = auth.info.email 
    user.oauth_token  = auth.credentials.token 
    user.oauth_expires_at = Time.at(auth.credentials.expires_at) 
    user.image   = auth.info.image 
    user.gender   = auth.extra.raw_info.gender 
    user.location   = auth.extra.raw_info.location.name 
    user.location   = auth.extra.raw_info.locale 
    # user.url    = auth_hash['info']['urls'][user.provider.capitalize] 
    user.save 
    end 
end 

Так Пытая подписаться с помощью электронной почты, вот что происходит!

enter image description here

Я предполагаю, что ошибка идет, потому что я звоню from_omniauth и я не пропускание провайдера, который я не нужен использовать в этом случае.

ответ

0

Вы можете подумать о том, чтобы начать свежие - используя https://github.com/plataformatec/devise, а затем добавив OmniAuth поверх этого (https://github.com/plataformatec/devise/wiki/OmniAuth:-Overview).

+0

Привет, @BenHawker, спасибо за комментарий, Но я пытаюсь построить всю аутентификацию пользователя, не используя Devise ... –

Смежные вопросы