微信小程序實現微信登錄 - 新聞資(zī)訊 - 雲南小程序開發|雲南軟件開發|雲南網站(zhàn)建設-西山區知普網絡科技工作室

159-8711-8523

雲南網建設/小程序開發/軟件開發

知識

不管是網站(zhàn),軟件還是小程序,都要直接或間接能為您産生價值,我們在追求其視覺表現的同時,更側重于功能的便捷,營銷的便利,運營的高效,讓網站(zhàn)成為營銷工具,讓軟件能切實提升企業(yè)内部管理水平和(hé)效率。優秀的程序為後期升級提供便捷的支持!

微信小程序實現微信登錄

發表時間:2020-9-26

發布人:葵宇科技

浏覽次數:54

小程序登錄

小程序可(kě)以通(tōng)過微信官方提供的登錄能力方便地獲取微信提供的用戶身份标識,快速建立小程序内的用戶體系。

登錄流程時序
在這裡插入圖片描述
說明: 調用 wx.login() 獲取 臨時登錄憑證 code ,并回傳到開發者服務器(qì)。調用 auth.code2Session 接口,換取 用戶唯一标識 OpenID 和(hé) 會話密鑰 session_key。之後開發者服務器(qì)可(kě)以根據用戶标識來生成自定義登錄态,用于後續業(yè)務邏輯中(zhōng)前後端交互時識别用戶身份。 注意:會話密鑰 session_key 是對用戶數據進行 加密簽名 的密鑰。為了應用自身的數據安全,開發者服務器(qì)不應該把會話密鑰下(xià)發到小程序,也不應該對外提供這個(gè)密鑰。臨時登錄憑證 code 隻能使用一次

小程序登錄态

對于小程序來說,也需要一個(gè)唯一的标識符來區分用戶,也就是session來保持會話,但是小程序沒有cookie, 因此我們的唯一标識符會被存儲在 localstorage 裡面,每次發請求時,都會從localStorage 裡面拿到這個(gè)唯一标識符,帶在請求中(zhōng)。

微信的openid和(hé)code

在日常開發中(zhōng),我們也經常聽到 openid 和(hé) code 的概念。

openid 用來标識這個(gè)唯一的微信用戶,也就是說,一個(gè)微信用戶相對于一個(gè)公衆号(主體)的 openid 是唯一的,是不會變的。

那麼我們如(rú)何才能知道 某一個(gè)用戶的 openid 呢(ne)?

就是通(tōng)過 code, 對于同一個(gè)用戶,每次獲取到的 code 都會改變,有有效期。我們把 code 作為參數,調用指定的微信服務器(qì)的接口,就可(kě)以拿到用戶的 openid 。

那麼我們如(rú)何才能拿到 code 呢(ne)?

  • 微信内h5頁面的方法是:跳到指定的微信的承接頁面,再跳回到本頁面,url鍊接上就會被拼上 code 。
  • 小程序的方法是: 通(tōng)過調用 wx.login() 方法,就可(kě)以拿到用戶的 code

微信小程序登錄體系

  1. 通(tōng)過 wx.login() 獲取到用戶的code
  2. 通(tōng)過 wx.request() 方法請求我們自己的後端,我們自己的服務端把 appid , appsecret 和(hé) code 一起發送到微信服務器(qì)。 appid 和(hé) appsecret 都是微信提供的,可(kě)以在管理員後台找到
  3. 微信服務器(qì)返回了 openid
  4. 我們在自己的數據庫中(zhōng),查找 openid ,如(rú)果沒有查到記錄,說明該用戶沒有注冊,如(rú)果有記錄,則繼續往下(xià)走
  5. 我們生成一個(gè)第三方 session , 也就是 session_id , 也就是用戶唯一标識符。在 redis 中(zhōng),把 session_id 和(hé)用戶的身份存進去。
  6. 返回 3rd_session
  7. 小程序把 3rd_session 存到 storage 裡面
  8. 下(xià)次請求時,先從 storage 裡面讀取,然後帶給服務端
  9. 服務端從 redis 裡面找到 3rd_session 對應的記錄,然後校(xiào)驗有效期

相關(guān)案例查看更多