/// <summary> /// 获取sid、uin及相关Cookie /// </summary> /// <param name="loginRedirect">扫描登录成功返回的string</param> /// <returns></returns> public string GetSidUinAndCookie(string loginRedirect) { try { byte[] bytes = RequstService.SendGetRequest(loginRedirect + "&fun=new"); string pass_ticket = Encoding.UTF8.GetString(bytes); string pass_Ticket = pass_ticket.Split(new string[] { "pass_ticket" }, StringSplitOptions.None)[1].TrimStart('>').TrimEnd('<', '/'); string sKey = pass_ticket.Split(new string[] { "skey" }, StringSplitOptions.None)[1].TrimStart('>').TrimEnd('<', '/'); /// 登录后sid Cookie sid = RequstService.GetCookie("wxsid"); /// 登录后uin Cookie uin = RequstService.GetCookie("wxuin"); Cookie webwx_data_ticket = RequstService.GetCookie("webwx_data_ticket"); WXResult wxResult = new WXResult(); wxResult.Status = "OK"; SidUinAndCookie sidUinAndCookie = new SidUinAndCookie(); sidUinAndCookie.pass_Ticket = pass_Ticket; sidUinAndCookie.sId = sid.Value; sidUinAndCookie.sKey = sKey; sidUinAndCookie.uIn = uin.Value; sidUinAndCookie.webwx_Data_Ticket = webwx_data_ticket.Value; wxResult.Result = sidUinAndCookie; return(_jsonSerialize.Serialize(wxResult)); } catch (Exception ex) { WXResult wxResult = new WXResult(); wxResult.Exception = ex.Message; return(_jsonSerialize.Serialize(wxResult)); } }
/// <summary> /// 获取需要发送用户UserName /// </summary> /// <param name="nickName">用户昵称 从好友列表中获取</param> /// <returns></returns> public string GetUserName(string nickName) { try { WXResult wxResult = new WXResult(); // JObject friends = MessageSync.Friends(); JObject friends = MessageSync.friends_result; if (friends != null) { if (friends["MemberList"] != null) { foreach (var item in friends["MemberList"]) { if (item["NickName"].ToString() == nickName) { return(item["UserName"].ToString()); } } } } return(""); } catch (Exception ex) { return(""); } }
/// <summary> /// 微信同步(获取最新消息) /// </summary> /// <returns></returns> public List <object> WxSync() { try { WXResult wxResult = new WXResult(); JObject sync_result = MessageSync.WxSync(); //同步检查 List <object> msgList = new List <object>(); if (sync_result != null) { if (sync_result["AddMsgCount"] != null && sync_result["AddMsgCount"].ToString() != "0") { foreach (JObject m in sync_result["AddMsgList"]) { WXMsg msg = new WXMsg(); msg.From = m["FromUserName"].ToString(); msg.To = m["ToUserName"].ToString(); msg.Msg = m["Content"].ToString(); msg.Type = int.Parse(m["MsgType"].ToString()); msgList.Add(msg); } return(msgList); } } return(null); } catch (Exception ex) { return(null); } }
/// <summary> /// 登录扫描检测 返回非空字符串为登录成功,该返回字符串用于请求 GetSidUinAndCookie 参数 /// </summary> public string LoginScanDetection() { try { WXResult wxResult = new WXResult(); object _object = _loginService.LoginScanDetection(); if (_object is string) //已扫描二维码并完成登录 { _loginService.tip = 0; //登录获取sid、uin _loginService.GetSidUin(_object as string); return(_object as string); } return(""); } catch (Exception ex) { return(null); } }
/// <summary> /// 获取用户信息——包括微擎方式 /// </summary> /// <param name="code"></param> /// <param name="iv"></param> /// <param name="encryptedData"></param> /// <param name="appID"></param> /// <param name="appSecret"></param> /// <returns></returns> public static WXAccountInfo ProcessRequest(string code, string iv, string encryptedData, string appID = WxPayConfig.APPID, string appSecret = WxPayConfig.APPSECRET) { Console.WriteLine("进入登陆:&&&"); string grant_type = "authorization_code"; WXAccountInfo userInfo = new WXAccountInfo(); //向微信服务端 使用登录凭证 code 获取 session_key 和 openid string url = $"https://api.weixin.qq.com/sns/jscode2session?appid={appID}&secret={appSecret}&js_code={code}&grant_type={grant_type}"; string type = "utf-8"; WXAccountInfoGetter GetUsersHelper = new WXAccountInfoGetter(); string j = WXAccountInfoGetter.GetUrltoHtml(url, type);//获取微信服务器返回字符串 Console.WriteLine("登陆返回参数:" + j); //将字符串转换为json格式 JObject jo = (JObject)JsonConvert.DeserializeObject(j); WXResult res = new WXResult(); try { //微信服务器验证成功 res.openid = jo["openid"].ToString(); res.session_key = jo["session_key"].ToString(); } catch (Exception) { //微信服务器验证失败 res.errcode = jo["errcode"].ToString(); res.errmsg = jo["errmsg"].ToString(); } if (!string.IsNullOrEmpty(res.openid)) { //用户数据解密 WXAccountInfoGetter.AesIV = iv; WXAccountInfoGetter.AesKey = res.session_key; Console.WriteLine("iv:{0},aeskey:{1}", iv, res.session_key); string result = GetUsersHelper.AESDecrypt(encryptedData); Console.WriteLine("result:" + result); //存储用户数据 JObject _usrInfo = (JObject)JsonConvert.DeserializeObject(result); userInfo.OpenId = _usrInfo["openId"].ToString(); Console.WriteLine("openId:" + userInfo.OpenId); try //部分验证返回值中没有unionId { userInfo.UnionId = _usrInfo["unionId"].ToString(); } catch (Exception) { userInfo.UnionId = "unionId"; } Console.WriteLine("unionId:" + userInfo.UnionId); userInfo.NickName = _usrInfo["nickName"].ToString(); userInfo.Gender = Convert.ToInt16(_usrInfo["gender"].ToString()); userInfo.City = _usrInfo["city"].ToString(); userInfo.Province = _usrInfo["province"].ToString(); userInfo.Country = _usrInfo["country"].ToString(); userInfo.AvatarUrl = _usrInfo["avatarUrl"].ToString(); object watermark = _usrInfo["watermark"].ToString(); object appid = _usrInfo["watermark"]["appid"].ToString(); object timestamp = _usrInfo["watermark"]["timestamp"].ToString(); } return(userInfo); }