微信扫码登录原理的示例分析
小编给大家分享一下微信扫码登录原理的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
在延平等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供做网站、成都网站设计 网站设计制作按需设计网站,公司网站建设,企业网站建设,品牌网站建设,全网营销推广,外贸网站建设,延平网站建设费用合理。
微信扫码登录原理解析
扫码登录是现在流行的登录方式,使用这种方式及其方便,而且安全
扫码登录流程
原理
获取唯一的uuid, 以及包含uid信息的二维码
// 获取uuid getUUID: function() { var e = t.defer(); return window.QRLogin = {}, $.ajax({ url: i.API_jsLogin, dataType: "script" }).done(function() { 200 == window.QRLogin.code ? e.resolve(window.QRLogin.uuid) : e.reject(window.QRLogin.code) }).fail(function() { e.reject() }), e.promise }
浏览器轮询服务器,获取扫码状态
// 查看扫码状态 checkLogin: function(e, a) { var n = t.defer() , a = a || 0; return window.code = 0, window.checkLoginPromise = $.ajax({ url: i.API_login + "?loginicon=true&uuid=" + e + "&tip=" + a + "&r=" + ~new Date, dataType: "script", timeout: 35e3 }).done(function() { new RegExp("/" + location.host + "/"); if (window.redirect_uri && window.redirect_uri.indexOf("/" + location.host + "/") < 0) return void (location.href = window.redirect_uri); var e = { code: window.code, redirect_uri: window.redirect_uri, userAvatar: window.userAvatar }; n.resolve(e) }).fail(function() { n.reject() }), n.promise }
根据服务器返回的扫码状态,进行相应的操作
408 扫码超时 如果手机没有扫码或没有授权登录,服务器会阻塞约25s,然后返回状态码 408 -> 前端继续轮询
400 二维码失效 大约5分钟的时间内不扫码,二维码失效
201 已扫码 如果手机已经扫码,服务器立即返回状态码和用户的基本信息 (window.code=201,window.code.userAvator="..."),-> 前端继续轮询
200 已授权 如果手机点击了确认登录,服务器返回200及token -> 前端停止轮询, 获取到token,重定向到目标页
// 根据服务器返回的扫码状态,进行相应的操作 function o(c) { switch (c.code) { case 200: t.newLoginPage(c.redirect_uri).then(function(t) { var o = t.match(/(.*)<\/ret>/) , r = t.match(/