0

我正在我的应用程序上实现 Facebook 登录并具有以下回调功能。如果用户以前存在,他应该自动登录。

错误:

    undefined method `user' for #<Oauth:0x007fbfb1194e20> on this row
sign_in_redirect(:user, oauth.user)

代码:

def facebook
    omniauth = request.env["omniauth.auth"]

    oauth = Oauth.find_by_provider_and_provider_uid(omniauth['provider'], omniauth['uid'])

    if oauth
      flash[:notice] = "Logged in succefully."
      sign_in_redirect(:user, oauth.user)
    else
      user = User.new
      user.name = omniauth.info.name
      user.username = omniauth.info.nickname
      user.email = omniauth.info.email
      user.password = SecureRandom.hex(4)
      #user.gender = extra.raw_info.gender

      user_oauth = Oauth.new
      user_oauth.provider = omniauth.provider
      user_oauth.provider_uid = omniauth.uid
      user_oauth.oauth_token = omniauth.credentials.token
      user_oauth.oauth_expires_at = Time.at(omniauth.credentials.expires_at)

      if user.save!
        user.oauths << user_oauth
      end

      flash[:notice] = "Signed up succefully."
      redirect_to root_path
    end
4

0 回答 0