微信一键登录

        /// <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;
        }

 

微信一键登录

以上是微信一键登录的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>