閱讀697 返回首頁    go iPhone_iPad_Mac_手機_平板_蘋果apple


微信小程序教程

小程序官方文檔中說道:

調用wx.login接口獲取登錄憑證(code)進而換取用戶登錄態信息,包括用戶的唯一標識(openid)及本次登錄的會話密鑰(session_key)。調用wx.getUserInfo接口將返回的數據會包含 encryptedData, iv 等敏感信息。用戶數據的加解密通訊需要依賴會話密鑰完成。

UnionID機製說明:

小程序登錄主要作用是獲取用戶信息,主要用到兩個API,一個是wx.login獲取用戶的jscode,再通過服務器端用jscode去獲取用戶的openid與session_key。openid是用戶在小程序公眾平台的唯一標識,注意,是小程序公眾平台內,而不是所有公眾平台內,即如果在服務號或訂閱號公眾平台,就可能會有跟此用戶同樣openid的用戶,如果要微信所有公眾平台某個用戶的唯一標識,就隻能用unionid了。session_key是用戶的密鑰,用於解密用戶敏感數據。另一個wx.getuserInfo就是為了獲取到用戶的加密敏感數據與偏移量iv,偏移量再加上之前的session_key就能解密用戶的敏感數據了。

官方提供的登錄流程圖:

下麵是主要步驟流程:

客戶端調用wx.login獲取code

客戶端調用wx.request請求把code傳到服務器後台

服務器後台根據code+appid+appsecret向微信後台發送請求獲取openid+session_key

服務器後台隨機生成一個隨機數3rd_session(以硬盤或設置或日期+rand隨機函數生成),以3rd_session為key,openid+session_key為Value存儲起來,並把3rd_session發送至客戶端,3rd_session所起的作用隻是為了驗證用戶登錄時的時效是否過期,並不是必須的,如不用驗證登錄是否過期,可不用3rd_session

客戶端獲取到3rd_session後存儲到storage

客戶端調用wx.getUserInfo獲取用戶敏感數據encryptedData和偏移向量IV

客戶端調用wx.request請求把encryptedData+偏移向量iv+3rd_session傳送到服務器後台

服務器後台根據3rd_session到緩存中找出session_key

服務器後台根據session_key+IV解密encryptedData(AES解密三個參數:密文encryptedData,密鑰session_key,偏移向量iv)

步驟流程結合的詳細流程圖:

小程序客戶端發起的調用:

後台業務服務端如下:

返回敏感數據格式如下:

“{\”openId\”:\”o7uAX0bcV-vUiWnSx7L2E\”,\”nickName\”:\”翔\”,\”gender\”:1,\”language\”:\”zh_CN\”,\”city\”:\”Guangzhou\”,\”province\”:\”Guangdong\”,\”country\”:\”CN\”,\”avatarUrl\”:\”https://wx.qlogo.cn/mmopen/vi_32/DwVhddtjryWwk6wMVKp2RZq4vxS0FtQIOz6WqDONz3BkWJb0SE4a5ibf8Hibg7STFiaaicibKCQax0XkA/0\",\"watermark\":{\"timestamp\":149251873,\"appid\":\"wx11cb7c92\"}}“

最後更新:2017-10-08 02:11:46

  上一篇:go 微信小程序教程 第二十七篇 微信小程序支付
  下一篇:go 微信公眾號廣告 如何創造神文案?