做微信的网站有哪些功能吗,做网页设计的步骤,鹿岛建设 网站,做网站的图片大小是多少Part1前言微信扫码登录#xff0c;微信扫码获取排队信息这些场景很常见#xff0c;但是大家知道里面的原理是怎么实现的呢#xff1f;今天我就来给大家解惑#xff01;Part2总体流程1浏览器请求服务器获取到二维码图片浏览器生成唯一值uuid通过uuid获取到带参数的二维码微信扫码获取排队信息这些场景很常见但是大家知道里面的原理是怎么实现的呢今天我就来给大家解惑Part2总体流程1浏览器请求服务器获取到二维码图片浏览器生成唯一值uuid通过uuid获取到带参数的二维码将uuid作为key存进redis缓存服务器里面服务端生成uuid返回给浏览器通过uuid获取到带参数的二维码将uuid作为key存进redis缓存服务器里面2用户扫码手机进行扫描二维码然后手机携带uuid和用户信息向手机的服务器发送请求手机服务器收到之后携带uuid去redis服务器查询用户。扫码登录查询用户成功之后返回一个Token给网页服务器通过解析这个Token可以拿出用户的信息然后浏览器就成功登录微信了。推送排队信息 查询用户成功之后调用模板消息然后排队信息推送就成功了。Part3开发以微信扫码获取排队信息为例第一步获取uuid为了简化流程且由前端生成uuid。第二步获取Access tokenpublic async Taskstring GetAccessToken(){var accesstoken await https://api.weixin.qq.com/cgi-bin/token.SetQueryParams(new{grant_type client_credential,appid WeixinSetting.Appid,secret WeixinSetting.Appsecret}).GetJsonAsyncAccessToken();return accesstoken.Access_Token;}第三步使用uuid创建二维码ticketpublic async Taskstring GetTicket(string uuid, string token){var accesstoken await https://api.weixin.qq.com/cgi-bin/qrcode/create.SetQueryParams(new{access_token token}).PostJsonAsync(new{expire_seconds 604800,action_name QR_STR_SCENE,action_info new{scene new{scene_str uuid}}}).ReceiveJsonTicketUrl();return accesstoken.Ticket;}第四步通过 ticket 换取二维码如果自己有通过ticket生成二维码的需求可自行处理 如果没有可以直接调取微信公众号接口public async Taskbyte[] GetQrCode(string ticket){return await https://mp.weixin.qq.com/cgi-bin/showqrcode.SetQueryParams(new{ticket ticket}).GetBytesAsync();}完整代码如下[HttpGet(GetQrCode)]public async TaskIActionResult GetQrCode(string uuid){return new FileContentResult( await _qrCodeServices.ShowQrCode(uuid), image/jpeg);}public async Taskbyte[] ShowQrCode(string uuid){string token await GetAccessToken();string ticket await GetTicket(uuid, token);return await GetQrCode(ticket);}这样我们就生成了带参数的二维码图片了第六步微信扫码进行回调在回调方法处理消息模板推送逻辑[HttpPost]public async Taskstring post(){IHttpBodyControlFeature httpBodyControlFeature Request.HttpContext.Features.GetIHttpBodyControlFeature();if (httpBodyControlFeature ! null ){httpBodyControlFeature.AllowSynchronousIO true;}string content new StreamReader(Request.Body).ReadToEnd();await qrCodeServices.PushTemplateMessage(content);return success;}public async Task PushTemplateMessage(string content){XmlDocument doc new XmlDocument();doc.LoadXml(content);if (doc.DocumentElement[MsgType].InnerText ! Event) return;if (doc.DocumentElement[Event].InnerText ! SCAN) return;string value doc.DocumentElement[FromUserName].InnerText;string token await GetAccessToken();var accesstoken await https://api.weixin.qq.com/cgi-bin/message/template/send.SetQueryParams(new{access_token token}).PostJsonAsync(new{touser value,template_id i4h4yHvgMgIoJ8-Mr49XcpbhMxmRXFJ5EF5DoOTGOMc,data new{first new{value 当前排队位置,color #173177},keyword1 new{value 70,color #173177},keyword2 new{value 40分钟,color #173177}}});}这样以微信扫码获取排队信息就成功了Part4总结文章来源于生活中的点点滴滴这也是我的即兴使用大家要是有更好的使用技巧欢迎交流独乐乐不如众乐乐本篇就说到这里啦希望对您有帮助。