4

Here is my controller

def social_login
    user = User.from_omniauth(env["omniauth.auth"])
    session_params = user.attributes.merge("email" => user.email, "password" => user.crypted_password)
    @user_session ||= UserSession.new(session_params, true)
    if @user_session.save
      user = User.where(email: @user_session.email).first
      redirect_to root_path, :notice => "Signed in succesfully from #{env["omniauth.auth"].provider.titleize}. Greetings #{user.name.titleize} ;)"    
    else
      flash.now[:alert] = "Sign in failed."
      render "new"
    end
end

here is the model to handle the omniauth process

  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.password = auth.credentials.token
      user.password_confirmation = auth.credentials.token
      user.oauth_token = auth.credentials.token
      user.oauth_expires_at = Time.at(auth.credentials.expires_at)
      user.save!
    end
  end

I always getting error when trying to save the session. It says:

Authlogic::Session::Existence::SessionInvalidError: Your session is invalid and has the following errors: Email is not valid

can you guys help me? thanks

cumi
  • 41
  • 2

1 Answers1

0

Did you enable the email permission in your facebook app config/rails's initializion?

Like this:

config.omniauth :facebook, "APP_ID", "APP_SECRET",  {:scope => 'email,...'}
Meeh
  • 2,538
  • 3
  • 18
  • 20