我正在我的应用程序上实现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