/// <summary> /// 小程序秘钥 /// </summary> /// <param name="wxLogin"></param> /// <returns></returns> [AllowUser] [HttpPost] public ResultResponse<bool> GetWxSessionKey([FromBody] WxLogin wxLogin) { ResultResponse<bool> ret = new ResultResponse<bool>(); if (string.IsNullOrWhiteSpace(wxLogin.sessionKey)) { ret.Flag = false; ret.Result = false; ret.ErrorMsg = "登录失败"; return ret; } var session = WxHelper.Code2Session(wxLogin.sessionKey); Session["wx_mini_session_key"] = session.session_key; ret.Result = true; ret.Flag = true; return ret; }
//登录、注册(一键授权)-UnionId
[AllowUser] [HttpPost] public ResultResponse<int> WxLoginUnionId([FromBody] WxLogin wxLogin) { ResultResponse<int> ret = new ResultResponse<int>(); SysUser user = null; wxLogin.sessionKey = Session["wx_mini_session_key"] as string; if (string.IsNullOrWhiteSpace(wxLogin.sessionKey) || string.IsNullOrWhiteSpace(wxLogin.iv) || string.IsNullOrWhiteSpace(wxLogin.encryptedData)) { ret.Flag = false; ret.ErrorMsg = "登录失败"; return ret; } var unionId = WxHelper.GetUnionIdYjsq(wxLogin.sessionKey, wxLogin.iv, wxLogin.encryptedData); var userInfo = WxHelper.wxUserInfo(wxLogin.sessionKey, wxLogin.iv, wxLogin.encryptedData); var session = WxHelper.GetAccessToken(wxLogin.sessionKey); if (session == null || string.IsNullOrWhiteSpace(unionId)) { ret.Result = 0; ret.Flag = false; ret.ErrorMsg = "登录失败"; return ret; } user = UserBll.GetUserByWxUnionId(unionId, 0); if (user != null) { user.IsPerfectInfo = true; LoginUser = new Account() { id = user.Id, name = user.Name, userName = user.Name }; user.AvatarUrl = user.AvatarUrl == null ? null : ConfigurationManager.AppSettings["WebSiteUrl"] + user.AvatarUrl; ret.Flag = true; ret.ErrorMsg = "OK"; ret.Result = user.Id; return ret; } else { SysUser user1 = new SysUser(); //注册 user1.Name = Convert.ToString(userInfo["nickName"]); var fileName = "_" + DateTime.Now.ToString("yyyyMMddHHssmmfff"); var path = "/File/HeadImage/"; var imgPath = FileHelper.SaveImageFromWeb(Convert.ToString(userInfo["avatarUrl"]), HttpContext.Current.Server.MapPath(path), fileName); user1.AvatarUrl = path + imgPath; user1.Password = SecurityHelper.Md5("111111Y"); user1.Phone = "1"; user1.IsPerfectInfo = false; user1.WxUnionId = unionId; var result = UserBll.Register(user1); if (!result) { ret.Result = 0; ret.Flag = false; return ret; } else { user = UserBll.GetUserByWxUnionId(unionId, 0); LoginUser = new Account() { id = user.Id, name = user.Name, pic = user.AvatarUrl, userName = user.Name }; OperateLogBll.AddOperateLog(new ComOperateLog() { MethodName = "Login", Logtype = "WxLoginUnionId", Username = LoginUser.name, BussinessName = "UserProgramController", Content = "用户" + LoginUser.id + "登录", ColumnName = "", TableName = "", AddDate = DateTime.Now }); } } ret.Result = user.Id; ret.Flag = true; ret.ErrorMsg = "OK"; return ret; }