示例#1
0
        private string GetCatchUserToken(UserLogonCatchInfo userinfo)
        {
            //缓存玩家的登录信息到Cookies
            //userinfo.SNSID = (byte)this.SNSID;
            userinfo.MarkTimestamp();
            userinfo.Sign = userinfo.MarkSign(this.APIKeySecretManager.ql_1.AppSecret);
            var base64data = userinfo.Serializer();

            return(base64data);
        }
示例#2
0
 private int do_WEB_ALL_UserLogon(string unionId, UserLogonCatchInfo userinfo, byte SNSID, out DataSet ds)
 {
     return(Core.DBTools.Data.DataProcedureHelper.WEB_ALL_UserLogon(
                _unionId: unionId,
                _Gender: userinfo.Sex,
                _header: userinfo.HeadImg,
                _ip: this.HttpContext.Connection.RemoteIpAddress.ToString(),
                _nickName: userinfo.NickName,
                _openId: userinfo.OpenID,
                _snsId: userinfo.SNSID,
                outDataSet: out ds
                ));
 }
示例#3
0
        public IActionResult wx_app(string code, string appId = "11")
        {
            if (string.IsNullOrEmpty(code))
            {
                return(WriteFail(notHasCodeValue));
            }

            var _apiConfig = Global.Instance.APIKeySecretManager.GetConfigValue(appId, "wx");

            if (_apiConfig == null)
            {
                return(WriteFail("输入了错误的微信AppId"));
            }


            var appid  = _apiConfig.AppId;
            var secret = _apiConfig.AppSecret;

            var url = string.Format(get_accessToken, appid, secret, code);

            var res = HttpHelper.GetString(url);

            if (string.IsNullOrEmpty(res))
            {
                return(WriteFail(invaildCode));
            }
            var access_token = Newtonsoft.Json.JsonConvert.DeserializeObject <accessToken_INFO>(res);

            if (access_token == null || !access_token.IsValidData)
            {
                Global.Instance.QLDebug.WriteErrorString("access_token.access_token = " + res);
                return(WriteFail(canNotGetUserInfo));
            }


            url = string.Format(get_userInfo, access_token.access_token, access_token.openid);
            res = HttpHelper.GetString(url);
            if (string.IsNullOrEmpty(res))
            {
                Global.Instance.QLDebug.WriteErrorString("access_token.res = " + res);
                return(WriteFail(canNotGetUserInfo));
            }
            //获取到用户信息的json字符串
            var userinfo = Newtonsoft.Json.JsonConvert.DeserializeObject <user_INFO>(res);

            if (userinfo == null || !userinfo.IsValidData)
            {
                Global.Instance.QLDebug.WriteErrorString("access_token.userinfo = " + res);
                return(WriteFail(canNotBingUserInfo));
            }

            Uri headImgUri;

            if (System.Uri.TryCreate(userinfo.headimgurl, UriKind.Absolute, out headImgUri))
            {
                var oldPath = userinfo.headimgurl;

                userinfo.headimgurl = $"{headImgUri.Scheme}://{this.ConfigManager.WxHeadImgHost}{headImgUri.PathAndQuery}";
                this.WriteLog($@"玩家{userinfo.nickname} 头像
源地址:{oldPath}
新地址:{userinfo.headimgurl}");
            }



            var cacheInfo = new UserLogonCatchInfo()
            {
                HeadImg    = userinfo.headimgurl + "",
                NickName   = userinfo.nickname + "",
                OpenID     = userinfo.openid,
                UnionID    = userinfo.unionid,
                Sex        = (byte)(userinfo.sex == 1 ? 1 : 2),
                RegionHost = this.ConfigManager.RegionHost,
                SNSID      = (byte)_apiConfig.SNSSetID
            };

            return(ProcessUserLogonResponse(cacheInfo));
        }
示例#4
0
        private IActionResult ProcessUserLogonResponse(UserLogonCatchInfo userinfo)
        {
            IWebParamData param = null;

            //尝试获取该用户的分享参数
            //if (!string.IsNullOrEmpty(userinfo.UnionID))
            //{
            //    try
            //    {
            //        var url = RedisTools.ReadShareParam(userinfo.UnionID);
            //        if (!string.IsNullOrEmpty(url))
            //        {
            //            param = Uyi.Web.WebParamData.FromUrl(url);
            //        }
            //    }
            //    catch { }
            //}
            if (param == null)
            {
                param = new WebParamData();
            }

            int parentUser = 0;
            //if (!int.TryParse(param["parent"], out parentUser))
            //{
            //    int.TryParse(context.Request["parent"], out parentUser);
            //}


            //初始化数据
            string openid   = userinfo.OpenID;
            string unionId  = userinfo.UnionID;
            string headimg  = userinfo.HeadImg;
            string nickname = userinfo.NickName;

            //调用数据接口
            DataSet ds;

            int retVal = do_WEB_ALL_UserLogon(unionId, userinfo, userinfo.SNSID, out ds);

            this.WriteLog($"玩家登陆:retVal = {retVal}");
            switch (retVal)
            {
            case 1: break;

            case -2:
            {
                return(Json(new
                    {
                        status = "showbox",
                        msg = "您的账号已被封停,请联系客服",
                    }));
            }

            default:
            {
                return(Json(new
                    {
                        status = "showtip",
                        msg = "服务器维护中...",
                    }));
            }
            }

            var dr     = ds.Tables[0].Rows[0];
            var userid = dr.GetData("userid").ConvertToUInt32();

            if (userid <= 0)
            {
                return(WriteFail("登录失败"));
            }

            //userinfo.HeadImg = userinfo.HeadImg;
            //userinfo.NickName = dr["nickname"].ToString();

            var catch_userTokken = GetCatchUserToken(userinfo);

            param["status"]      = "success";
            param["accesstoken"] = GetUserAccessToken(userid);
            param["catchtoken"]  = catch_userTokken;

            //UyiDebug.WriteLog($"用户APP登录输出:{param.ToJson()}");

            //响应结果数据
            return(Json(param));
        }