private async Task <PortalTokenResp> OauthReg(OauthUserMo oauthUser) { var user = GetRegisterUserInfo(oauthUser.nick_name, string.Empty, RegLoginType.ThirdName); user.avatar = oauthUser.head_img; var ptRes = await RegFinallyExecute(user, PortalAuthorizeType.User, false, oauthUser.social_plat); if (ptRes.IsSuccess()) { await OauthUserRep.Instance.BindUserIdByOauthId(oauthUser.id, ptRes.data.id.ToInt64()); } return(ptRes); }
public async Task <ResultMo> UpdateUserWithToken(OauthUserMo user) { return(await Update(user, u => new { u.app_union_id, u.head_img, u.nick_name, u.sex, u.access_token, u.expire_date, u.refresh_token }, w => w.id == user.id)); }
/// <summary> /// 添加或更新第三方授权用户信息 /// </summary> /// <param name="plat"></param> /// <param name="code"></param> /// <param name="state"></param> /// <returns></returns> private static async Task <Resp <OauthUserMo> > AddOrUpdateOauthUser(SocialPlatform plat, string code, string state) { var userWxRes = await GetOauthUserByCode(plat, code, state); if (!userWxRes.IsSuccess()) { return(new Resp <OauthUserMo>().WithResp(userWxRes)); } var userRes = await OauthUserRep.Instance.GetOauthUserByAppUserId(userWxRes.data.app_user_id, plat); if (userRes.IsSuccess()) { // 如果存在,更新已有信息 var user = userRes.data; user.SetInfoFromSocial(userWxRes.data); user.social_plat = plat; user.status = UserStatus.Normal; await OauthUserRep.Instance.UpdateUserWithToken(user); return(new Resp <OauthUserMo>(user)); } // 其他错误,直接返回 if (!userRes.IsRespType(RespTypes.ObjectNull)) { return(userRes); } // 如果是新授权用户,添加新的信息 var newUser = new OauthUserMo(); newUser.SetInfoFromSocial(userWxRes.data); var idRes = await OauthUserRep.Instance.Add(newUser); if (!idRes.IsSuccess()) { return(new Resp <OauthUserMo>().WithResp(idRes.ret, "添加授权用户信息失败!")); // idRes.ConvertToResult<OauthUserMo>(); } newUser.id = idRes.data; return(new Resp <OauthUserMo>(newUser)); }
/// <summary> /// 通过从社交平台拿回来信息重新赋值 /// </summary> /// <param name="target"></param> /// <param name="source"></param> public static void SetInfoFromSocial(this OauthUserMo target, OauthUser source) { var appInfo = AppReqContext.Identity; target.access_token = source.access_token; target.expire_date = source.expire_date; target.refresh_token = source.refresh_token; target.social_plat = source.social_plat.ToSocialPlat(); target.head_img = source.head_img; target.app_union_id = source.app_union_id; target.nick_name = source.nick_name; target.sex = source.sex.ToSexType(); target.app_user_id = source.app_user_id; target.add_time = DateTime.Now.ToUtcSeconds(); }
/// <summary> /// 转化到授权实体 /// </summary> /// <param name="wxMo"></param> /// <returns></returns> public static ResultMo <OauthUserMo> ConvertToComMo(this WxGetOauthUserResp wxMo) { if (!wxMo.IsSuccess()) { return(wxMo.ConvertToResultOnly <OauthUserMo>()); } //var appInfo = MemberShiper.AppAuthorize; var comMo = new OauthUserMo { app_user_id = wxMo.openid, app_union_id = wxMo.unionid, sex = (Sex)wxMo.sex, nick_name = wxMo.nickname, platform = SocialPaltforms.Wechat, head_img = wxMo.headimgurl }; return(new ResultMo <OauthUserMo>(comMo)); }
private static Resp <UserIdentity> InitialOauthTempIdentity(OauthUserMo oauthUser, SocialPlatform fromPlat) { var checkRes = CheckIdentityStatus(oauthUser.status); if (!checkRes.IsSuccess()) { return(new Resp <UserIdentity>().WithResp(checkRes)); } // 当前是临时第三方信息,【Id】是第三方授权表的oauthId // 此场景是给用户授权后选择是否绑定已有账户页面使用 var identity = new UserIdentity { id = oauthUser.id.ToString(), name = oauthUser.nick_name, avatar = oauthUser.head_img, //from_plat = (int) fromPlat, auth_type = PortalAuthorizeType.SocialAppUser, }; return(new Resp <UserIdentity>(identity)); }