javascript - 關于微信掃一掃的技術問題
問題描述
現(xiàn)在通過了解知道微信二維碼里面包含一個uid,通過客戶端掃二維碼拿到這個UID,網(wǎng)頁端不斷的請求此Uid是否得到授權,得到授權之后才會登陸,我有點不明白的地方是,客戶端怎么才能讓網(wǎng)頁端知道已經(jīng)得到授權和登陸的請求。發(fā)送到服務器之后網(wǎng)頁端是怎么拿到這個授權的,如果通過數(shù)據(jù)庫肯定很簡單,但是我覺得肯定不是通過數(shù)據(jù)庫拿到的。請問這個里面還有什么技術可以讓客戶端發(fā)送的指令讓網(wǎng)頁端拿到!!求不吝賜教
問題解答
回答1:除了返回唯一的uid,實際上打開這個頁面的時候,瀏覽器跟服務器還創(chuàng)建了一個長連接,請求uid的掃描記錄。如果沒有,在特定時長后(目前是27秒左右)會接到狀態(tài)碼408(請求超時),表示應該繼續(xù)下一次請求;如果接到狀態(tài)碼201(服務器創(chuàng)建新資源成功),表示客戶端掃描了該二維碼。
請求超時:返回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) { // .... } }); }
當用戶使用登錄后的微信掃描二維碼的時候,會將uid和手機微信產(chǎn)生的token進行綁定,并上傳到服務器。這個時候,瀏覽器通過長輪詢查詢到uid掃描記錄,立即得到201響應碼,然后通知服務器,客戶端由此也進入一個新的頁面(就是那個要你點確認的按鈕)。在客戶端點擊確認后,獲得服務器授信的令牌,進行隨后的信息交互過程。
相關文章:
1. 一個走錯路的23歲傻小子的提問2. python - 如何使用pykafka consumer進行數(shù)據(jù)處理并保存?3. javascript - SuperSlide.js火狐不兼容怎么回事呢4. java - 創(chuàng)建maven項目失敗了 求解決方法5. node.js - 函數(shù)getByName()中如何使得co執(zhí)行完后才return6. java-se - 正在學習Java SE,為什么感覺學習Java就是在學習一些API。7. 運行python程序時出現(xiàn)“應用程序發(fā)生異常”的內存錯誤?8. python - django 里自定義的 login 方法,如何使用 login_required()9. java - 安卓電視盒子取得了root權限但是不能安裝第三方應用,請問該怎么辦?10. 一個mysql聯(lián)表查詢的問題
