首頁  >  問答  >  主體

javascript - 關於微信掃一掃的技術問題

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

PHPzPHPz2712 天前794

全部回覆(1)我來回復

  • phpcn_u1582

    phpcn_u15822017-05-17 10:07:28

    除了返回唯一的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回應碼,然後通知伺服器,客戶端由此也進入一個新的頁面(就是那個要你點確認的按鈕)。在客戶端點選確認後,取得伺服器授信的令牌,進行後續的資訊互動過程。

    回覆
    0
  • 取消回覆