中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

微信掃碼登錄原理的示例分析

小編給大家分享一下微信掃碼登錄原理的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

在延平等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供做網(wǎng)站、成都網(wǎng)站設(shè)計 網(wǎng)站設(shè)計制作按需設(shè)計網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站建設(shè),全網(wǎng)營銷推廣,外貿(mào)網(wǎng)站建設(shè),延平網(wǎng)站建設(shè)費用合理。

微信掃碼登錄原理解析

掃碼登錄是現(xiàn)在流行的登錄方式,使用這種方式及其方便,而且安全

掃碼登錄流程

微信掃碼登錄原理的示例分析

原理

獲取唯一的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
 }

瀏覽器輪詢服務(wù)器,獲取掃碼狀態(tài)

// 查看掃碼狀態(tài)
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
}

根據(jù)服務(wù)器返回的掃碼狀態(tài),進行相應(yīng)的操作

408 掃碼超時 如果手機沒有掃碼或沒有授權(quán)登錄,服務(wù)器會阻塞約25s,然后返回狀態(tài)碼 408 -> 前端繼續(xù)輪詢

微信掃碼登錄原理的示例分析

微信掃碼登錄原理的示例分析

400 二維碼失效 大約5分鐘的時間內(nèi)不掃碼,二維碼失效

微信掃碼登錄原理的示例分析

201 已掃碼 如果手機已經(jīng)掃碼,服務(wù)器立即返回狀態(tài)碼和用戶的基本信息 (window.code=201,window.code.userAvator="..."),-> 前端繼續(xù)輪詢

微信掃碼登錄原理的示例分析

200 已授權(quán) 如果手機點擊了確認(rèn)登錄,服務(wù)器返回200及token -> 前端停止輪詢, 獲取到token,重定向到目標(biāo)頁

微信掃碼登錄原理的示例分析

// 根據(jù)服務(wù)器返回的掃碼狀態(tài),進行相應(yīng)的操作
function o(c) {
 switch (c.code) {
 case 200:
  t.newLoginPage(c.redirect_uri).then(function(t) {
   var o = t.match(/<ret>(.*)<\/ret>/)
    , r = t.match(/<script>(.*)<\/script>/)
    , c = t.match(/<skey>(.*)<\/skey>/)
    , s = t.match(/<wxsid>(.*)<\/wxsid>/)
    , l = t.match(/<wxuin>(.*)<\/wxuin>/)
    , d = t.match(/<pass_ticket>(.*)<\/pass_ticket>/)
    , f = t.match(/<message>(.*)<\/message>/)
    , u = t.match(/<redirecturl>(.*)<\/redirecturl>/);
   return u ? void (window.location.href = u[1]) : o && "0" != o[1] ? (alert(f && f[1] || "登陸失敗"),
   i.report(i.AUTH_FAIL_COUNT, 1),
   void location.reload()) : (e.$emit("newLoginPage", {
    Ret: o && o[1],
    SKey: c && c[1],
    Sid: s && s[1],
    Uin: l && l[1],
    Passticket: d && d[1],
    Code: r
   }),
   void (a.getCookie("webwx_data_ticket") || n.report(n.ReportType.cookieError, {
    text: "webwx_data_ticket 票據(jù)丟失",
    cookie: document.cookie
   })))
  });
  break;
 case 201:
  e.isScan = !0,
  n.report(n.ReportType.timing, {
   timing: {
    scan: Date.now()
   }
  }),
  t.checkLogin(e.uuid).then(o, function(t) {
   !t && window.checkLoginPromise && (e.isBrokenNetwork = !0)
  });
  break;
 case 408:
  t.checkLogin(e.uuid).then(o, function(t) {
   !t && window.checkLoginPromise && (e.isBrokenNetwork = !0)
  });
  break;
 case 400:
 case 500:
 case 0:
  var s = a.getCookie("refreshTimes") || 0;
  s < 5 ? (s++,
  a.setCookie("refreshTimes", s, .5),
  document.location.reload()) : e.isNeedRefresh = !0;
  break;
 case 202:
  e.isScan = !1,
  e.isAssociationLogin = !1,
  a.setCookie("login_frequency", 0, 2),
  window.checkLoginPromise && (window.checkLoginPromise.abort(),
  window.checkLoginPromise = null ),
  r()
 }
 e.code = c.code,
 e.userAvatar = c.userAvatar,
 a.log("get code", c.code)
}

以上是“微信掃碼登錄原理的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

名稱欄目:微信掃碼登錄原理的示例分析
網(wǎng)站路徑:http://www.rwnh.cn/article24/gcgjje.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版網(wǎng)站建設(shè)、企業(yè)網(wǎng)站制作標(biāo)簽優(yōu)化、網(wǎng)站制作、網(wǎng)站營銷

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)
凌海市| 伊宁县| 武定县| 合作市| 收藏| 宜兰县| 正蓝旗| 循化| 八宿县| 财经| 大悟县| 西充县| 同仁县| 邯郸县| 社旗县| 洪泽县| 仁布县| 遂昌县| 蛟河市| 海丰县| 波密县| 万盛区| 方正县| 定结县| 苗栗县| 云林县| 商河县| 抚顺县| 孙吴县| 玉龙| 响水县| 盐城市| 浦北县| 兴文县| 渭南市| 云林县| 金川县| 丹凤县| 谷城县| 吉安市| 中山市|