github回调信息完成

This commit is contained in:
junleea 2025-04-27 10:35:41 +08:00
parent cf37fac963
commit ba553984e4
2 changed files with 33 additions and 10 deletions

View File

@ -238,6 +238,17 @@ func CreateThirdPartyUserInfo(userID, thirdPartyID int, thirdPartyPlatform, thir
}
return thirdPartyUserInfo.ID
}
func CreateThirdPartyUserInfoV2(thirdPartyUserInfo *ThirdPartyUserInfo) uint {
db2 := DB
if proto.Config.SERVER_SQL_LOG {
db2 = DB.Debug()
}
res := db2.Create(thirdPartyUserInfo)
if res.Error != nil {
return 0
}
return thirdPartyUserInfo.ID
}
// 删除
func DeleteThirdPartyUserInfoByID(id int) int {

View File

@ -215,29 +215,31 @@ func DoGithubCallBack(state *proto.ThirdPartyLoginState, code string) {
log.Println("get github access token is empty")
return
}
log.Println("get github access token:", resp.AccessToken)
//获取用户信息
userInfo, err := worker.GetGitHubUserInfo(resp.AccessToken)
if err != nil {
log.Println("get github user info error:", err)
return
}
log.Println("get github user info:", userInfo)
var thirdPartyLoginStatus proto.ThirdPartyLoginStatus
thirdPartyLoginStatus.Type = state.Platform
if state.Type == "login" {
//根据第三方平台查找用户
thirdPartyUserInfoList := dao.FindThirdPartyUserInfoByThirdPartyID(userInfo.UserID)
if thirdPartyUserInfoList == nil || len(thirdPartyUserInfoList) == 0 {
thirdPartyLoginStatus.Status = 2 //未绑定用户
thirdPartyLoginStatus.Status = proto.ThirdPartyUserNotBinded //未绑定用户
} else {
thirdPartyUserInfo := thirdPartyUserInfoList[0]
//获取用户信息
user := GetUserByIDWithCache(thirdPartyUserInfo.UserID)
if user.ID == 0 {
thirdPartyLoginStatus.Status = 2
thirdPartyLoginStatus.Status = proto.ThirdPartyUserNotBinded
log.Println("get user by id error")
} else {
//成功
thirdPartyLoginStatus.Status = 0
thirdPartyLoginStatus.Status = proto.SuccessCode
thirdPartyLoginStatus.UserInfo.UserID = int(user.ID)
thirdPartyLoginStatus.UserInfo.Username = user.Name
thirdPartyLoginStatus.UserInfo.Email = user.Email
@ -260,11 +262,18 @@ func DoGithubCallBack(state *proto.ThirdPartyLoginState, code string) {
//根据用户ID获取用户信息
user := GetUserByIDWithCache(userID)
if user.ID == 0 {
thirdPartyLoginStatus.Status = 2 //未绑定用户
thirdPartyLoginStatus.Status = 4 //添加用户信息错误
log.Println("get user by id error")
} else {
//需要创建数据库记录
data := dao.ThirdPartyUserInfo{UserID: userID, ThirdPartyID: userInfo.UserID, ThirdPartyPlatform: state.Platform, ThirdPartyUserAvatar: userInfo.AvatarUrl, ThirdPartyUserName: userInfo.LoginUserName, ThirdPartyUserUrl: userInfo.Url}
uid := dao.CreateThirdPartyUserInfoV2(&data)
if uid == 0 {
log.Println("create third party user info error")
thirdPartyLoginStatus.Status = proto.OperationFailed //操作错误
} else {
//成功
thirdPartyLoginStatus.Status = 0
thirdPartyLoginStatus.Status = proto.SuccessCode
thirdPartyLoginStatus.UserInfo.UserID = int(user.ID)
thirdPartyLoginStatus.UserInfo.Username = user.Name
thirdPartyLoginStatus.UserInfo.Email = user.Email
@ -272,11 +281,14 @@ func DoGithubCallBack(state *proto.ThirdPartyLoginState, code string) {
}
}
}
}
} else {
log.Println("DoGithubCallBack state type error:", state.Type)
thirdPartyLoginStatus.Status = proto.ParameterError //参数错误
}
//更新redis中的第三方登录状态
thirdPartyLoginStatusStr, _ := json.Marshal(thirdPartyLoginStatus)
log.Println("do handle github callback success, third party login status:", string(thirdPartyLoginStatusStr))
worker.SetRedisWithExpire(state.UUID, string(thirdPartyLoginStatusStr), time.Minute*10)
}