fixed ci4s oauth2接入 user_info

This commit is contained in:
xxq250 2024-10-23 11:48:25 +08:00
parent 45f597ab47
commit 3a460b3b1d
1 changed files with 12 additions and 12 deletions

View File

@ -13,13 +13,13 @@ class Oauth::Ci4sController < Oauth::BaseController
tip_exception("code不能为空") if code.blank?
new_user = false
result = Ci4s::Service.access_token(code)
Rails.logger.info("[OAuth2] result -> #{result}")
# result = token[:account_info]
result = Ci4s::Service.user_info(result[:access_token])
token = Ci4s::Service.access_token(code)
Rails.logger.info("[OAuth2] result -> #{token}")
result = Ci4s::Service.user_info(token[:access_token])
tip_exception("请求用户信息错误") if result['code'].to_i != 200
user_info = result['data']
# 存在该用户
open_user = OpenUsers::Ci4s.find_by(uid: result['login'])
open_user = OpenUsers::Ci4s.find_by(uid: user_info['login'])
if open_user.present? && open_user.user.present?
successful_authentication(open_user.user)
redirect_to root_path(new_user: false)
@ -27,20 +27,20 @@ class Oauth::Ci4sController < Oauth::BaseController
else
if current_user.blank? || !current_user.logged?
new_user = true
session[:unionid] = result['username']
session[:unionid] = user_info['username']
# login = User.generate_login('E')
login = result['username']
email = result['email']
login = user_info['username']
email = user_info['email']
email = "#{login}@forge.com" if email.blank?
reg_result = autologin_register(login,email, "Ec#{login}2021#", 'educoder', result['mobile'])
reg_result = autologin_register(login,email, "Ec#{login}2021#", 'educoder', user_info['mobile'])
if reg_result[:message].blank?
open_user = OpenUsers::Ci4s.create!(user_id: reg_result[:user][:id], uid: login, extra: result)
open_user = OpenUsers::Ci4s.create!(user_id: reg_result[:user][:id], uid: login, extra: user_info)
successful_authentication(open_user.user)
else
render_error(reg_result[:message])
end
else
OpenUsers::Ci4s.create!(user: current_user, uid: result['login'], extra: result)
OpenUsers::Ci4s.create!(user: current_user, uid: user_info['login'], extra: user_info)
end
end
Rails.logger.info("[OAuth2] session[:unionid] -> #{session[:unionid]}")