javascript - 關於微信掃一掃的技術問題
PHPz
PHPz 2017-05-17 10:05:28
0
1
823

現在透過了解知道微信二維碼裡麵包含一個uid,透過客戶端掃二維碼拿到這個UID,網頁端不斷的請求此Uid是否得到授權,得到授權之後才會登陸,我有點不明白的地方是,客戶端怎麼能讓網頁端知道已經被授權和登陸的請求。傳送到伺服器之後網頁端是怎麼拿到這個授權的,如果透過資料庫肯定很簡單,但是我覺得絕對不是透過資料庫拿到的。請問這個裡面還有什麼技術可以讓客戶端發送的指令讓網頁端拿到! !求不吝賜教

PHPz
PHPz

学习是最好的投资!

全部回覆(1)
phpcn_u1582

除了返回唯一的uid,實際上打開這個頁面的時候,瀏覽器跟伺服器還創建了一個長連接,請求uid的掃描記錄。如果沒有,在特定時長後(目前是27秒左右)會接到狀態碼408(請求超時),表示應該繼續下一次請求;如果接到狀態碼201(伺服器建立新資源成功),表示客戶端掃描了該二維碼。

請求超時:返回408

掃碼成功:回傳201

查詢程式碼

 function _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和手機微信產生的token進行綁定,並上傳到伺服器。這時候,瀏覽器透過長輪詢查詢到uid掃描記錄,立即得到201回應碼,然後通知伺服器,客戶端由此也進入一個新的頁面(就是那個要你點確認的按鈕)。在客戶端點選確認後,取得伺服器授信的令牌,進行後續的資訊互動過程。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板