这是我的控制器
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
这是处理omniauth过程的模型
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
尝试保存会话时我总是收到错误.它说:
Authlogic::Session::Existence::SessionInvalidError: Your session is invalid and has the following errors: Email is not valid
你们能帮助我吗?谢谢
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。