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