javascript - 關(guān)于微信掃一掃的技術(shù)問(wèn)題
問(wèn)題描述
現(xiàn)在通過(guò)了解知道微信二維碼里面包含一個(gè)uid,通過(guò)客戶端掃二維碼拿到這個(gè)UID,網(wǎng)頁(yè)端不斷的請(qǐng)求此Uid是否得到授權(quán),得到授權(quán)之后才會(huì)登陸,我有點(diǎn)不明白的地方是,客戶端怎么才能讓網(wǎng)頁(yè)端知道已經(jīng)得到授權(quán)和登陸的請(qǐng)求。發(fā)送到服務(wù)器之后網(wǎng)頁(yè)端是怎么拿到這個(gè)授權(quán)的,如果通過(guò)數(shù)據(jù)庫(kù)肯定很簡(jiǎn)單,但是我覺(jué)得肯定不是通過(guò)數(shù)據(jù)庫(kù)拿到的。請(qǐng)問(wèn)這個(gè)里面還有什么技術(shù)可以讓客戶端發(fā)送的指令讓網(wǎng)頁(yè)端拿到!!求不吝賜教
問(wèn)題解答
回答1:除了返回唯一的uid,實(shí)際上打開(kāi)這個(gè)頁(yè)面的時(shí)候,瀏覽器跟服務(wù)器還創(chuàng)建了一個(gè)長(zhǎng)連接,請(qǐng)求uid的掃描記錄。如果沒(méi)有,在特定時(shí)長(zhǎng)后(目前是27秒左右)會(huì)接到狀態(tài)碼408(請(qǐng)求超時(shí)),表示應(yīng)該繼續(xù)下一次請(qǐng)求;如果接到狀態(tài)碼201(服務(wù)器創(chuàng)建新資源成功),表示客戶端掃描了該二維碼。
請(qǐng)求超時(shí):返回408function _poll(_asUUID) { $.ajax({ type: 'GET', url: 'https://login.' + _sBaseHost + '/cgi-bin/mmwebwx-bin/login?uuid=' + _asUUID + '&tip=' + show_tip, dataType: 'script', cache: false, timeout: _nAjaxTimeout, success: function(data, textStatus, jqXHR) { switch (_aoWin.code) { case 200: // .... break; case 201: // .... break; case 408: // .... break; case 400: case 500: // .... break; } }, error: function(jqXHR, textStatus, errorThrown) { // .... } }); }
當(dāng)用戶使用登錄后的微信掃描二維碼的時(shí)候,會(huì)將uid和手機(jī)微信產(chǎn)生的token進(jìn)行綁定,并上傳到服務(wù)器。這個(gè)時(shí)候,瀏覽器通過(guò)長(zhǎng)輪詢查詢到uid掃描記錄,立即得到201響應(yīng)碼,然后通知服務(wù)器,客戶端由此也進(jìn)入一個(gè)新的頁(yè)面(就是那個(gè)要你點(diǎn)確認(rèn)的按鈕)。在客戶端點(diǎn)擊確認(rèn)后,獲得服務(wù)器授信的令牌,進(jìn)行隨后的信息交互過(guò)程。
相關(guān)文章:
1. mysql - 數(shù)據(jù)庫(kù)建字段,默認(rèn)值空和empty string有什么區(qū)別 1102. 新人求教MySQL關(guān)于判斷后拼接條件進(jìn)行查詢的sql語(yǔ)句3. 在mybatis使用mysql的ON DUPLICATE KEY UPDATE語(yǔ)法實(shí)現(xiàn)存在即更新應(yīng)該使用哪個(gè)標(biāo)簽?4. mysql - 這種分級(jí)一對(duì)多,且分級(jí)不平衡的模型該怎么設(shè)計(jì)表?5. Navicat for mysql 中以json格式儲(chǔ)存的數(shù)據(jù)存在大量反斜杠,如何去除?6. mysql - 數(shù)據(jù)庫(kù)表中,兩個(gè)表互為外鍵參考如何解決7. php - 公眾號(hào)文章底部的小程序二維碼如何統(tǒng)計(jì)?8. mysql - 表名稱(chēng)前綴到底有啥用?9. mysql - 千萬(wàn)數(shù)據(jù) 分頁(yè),當(dāng)偏移量 原來(lái)越大時(shí),怎么優(yōu)化速度10. mac OSX10.12.4 (16E195)下Mysql 5.7.18找不到配置文件my.cnf
