//登录 public void StartLogin() { //开始时间戳 StartTimestamp = Tools.Timestamp(); //获取uuid Uuid = LoginUuid.GetUuid(StartTimestamp, httpClient); TimestampCount++; //报告设备号,无实际意义,模拟真实页面 WebwxStatReport.GetData(httpJson, DeviceID); //开始监听登录事件 httpClient.GetAsync(LoginQrcode.MonitorUrl(Uuid, StartTimestamp + TimestampCount++, GetRnum()), WaitScanCode); //报告时设备号,时间戳,无实际意义,模拟真实页面 WebwxStatReport.GetData(httpJson, DeviceID, StartTimestamp); //获取登录二维码 OnImageChanged(LoginQrcode.QrCode(httpClient, Uuid)); }
//监听二维码扫描状态 private void WaitScanCode(string result) { //等待中 //window.code = 201 if (result.Trim().Contains("window.code=408")) { httpClient.GetAsync(LoginQrcode.MonitorUrl(Uuid, StartTimestamp + TimestampCount++, GetRnum()), WaitScanCode); } else //二维码失效 if (result.Trim().Contains("window.code=400")) { } else //扫码完成 if (result.Trim().Contains("window.code=201")) { var bytes = LoginQrcode.UserAvatar(result); if (bytes.Length > 0) { MemoryStream stream = new MemoryStream(bytes); OnImageChanged(Image.FromStream(stream)); } else { //没有头像 } httpClient.GetAsync(LoginQrcode.MonitorUrl(Uuid, StartTimestamp + TimestampCount++, GetRnum()), WaitScanCode); } else //确认登录完成 if (result.Trim().Contains("window.code=200")) { string r_url = LoginQrcode.LoginRedirectUri(result); Uri uri = new Uri(r_url); var dict = Tools.QueryStringToDict(uri.Query); Ticket = dict["ticket"] ?? ""; Scan = dict["scan"] ?? ""; LoginCompleted(r_url); } }