<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                :-: ![](https://img.kancloud.cn/09/ac/09acd8c24332e91dd9defbac05e1d4e1_748x755.png) ## **登錄流程** 1. 小程序前端調用 [`wx.login`](https://developers.weixin.qq.com/miniprogram/dev/api/open-api/login/wx.login.html) 獲取**臨時登錄憑證 `code` **,并回傳到開發者服務器(服務端)。 2. 服務端通過小程序 **appId,appSecert**,以及剛獲取的 `code` 調用 [`auth.code2Session`](https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/login/auth.code2Session.html) 接口,換取**用戶唯一標識 OpenID**,用戶在微信開放平臺帳號下的**唯一標識UnionID**(若當前小程序已綁定到微信開放平臺帳號) 和**會話密鑰 session_key**。 3. 如果數據庫中有匹配當前 `openid` 的信息,執行登錄操作;如果數據庫中沒有匹配當前`openid`的信息,執行注冊操作(將剛才返回的信息寫入數據庫)。 4. 服務端生成個一個**自定義的登錄態**(token或session),來保存微信服務器返回的登錄態相關信息(`session_key`、`openid`、`unionid`),并且做關聯處理,然后返回給小程序客戶端。 5. 小程序客戶端接收到返回的**自定義登錄態**信息,登錄成功。將后端返回的信息存儲至小程序緩存 **storage**中。 6. 小程序客戶端訪問業務接口的時候,攜帶之前保存的**自定義登錄態**信息對服務端業務接口進行訪問。 7. 服務端業務接口接收到請求,先校驗**自定義登錄態**,然后返回相關信息。如果校驗登錄態超時,告知小程序客戶端需要重新登錄; ## **登錄態** **程序在運行時,能夠識別當前用戶,能夠證明自己的唯一性且合法。** WEB服務器通過瀏覽器攜帶的cookie獲取session來判斷是否是同一用戶(或瀏覽器);Restful服務通過客戶端傳過來唯一ID,來識別調用用戶。 :-: ![](https://img.kancloud.cn/33/3e/333ea3f3090ce76113eabb1578d5aed8_640x346.png) ### **使用sessionkey來維護登錄態** 小程序用戶身份的標識使用 openid,如果是多平臺的可以使用 unionid。同一個用戶這兩個id 是永久不變的,就算用戶刪除了小程序,下次用戶進入小程序,開發者依舊可以通過后臺的記錄標識出來。 在實際使用中用到`session_key`的場景不多。比如用戶信息 `openid `和`unionid`獲取、用戶手機號的獲取。前者是`wx.login()`中通過`code`就能獲取到,用`session_key`來解密的場景基本上就很少了。 但是獲取用戶手機號時要使用**有效的** `session_key`,使用之前需要 `wx.checkSession()` 來檢查是否過期, 如果過期調用 `wx.login` 重新登錄。 把`session_key`保存到服務器上,一般是不在網絡傳輸,建立自己的 `session_id `或 `token` 和生成的`session_key`的對應關系。然后把生成的session_id 或 token傳輸到小程序客戶端,在小程序本地緩存。在需要使用`session_key`的場景時先使用`wx.checkSession()`判定一下有沒有過期,如果沒有過期就把本地的`session_id `傳輸到服務端,服務端根據`session_id `查詢對應的`session_key`,進行后繼的業務操作。如果本地判定已經過期,那就先`wx.login()`重新生一次。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看