有幸參加微信小程序的內(nei) 測,由於(yu) 公司之前已經有自己的服務大號,積累轉化了大量的會(hui) 員
所以在做小程序時,要實現會(hui) 員的互通,想到的是 unionid
調用接口獲取登錄憑證(code)進而換取用戶登錄態信息,包括用戶的唯一標識(openid) 及本次登錄的 會(hui) 話密鑰(session_key)
參見:https://mp.weixin.qq.com/debug/wxadoc/dev/api/api-login.html?t=1474887500719
獲取用戶信息,需要先調用 wx.login 接口
其中需要的unionid在調用成功返回的
參見:https://mp.weixin.qq.com/debug/wxadoc/dev/api/open.html?t=1474887500618
是個(ge) 加密數據,解密算法
參見:https://mp.weixin.qq.com/debug/wxadoc/dev/api/signature.html
前端先調 wx.login 得到code
後端換取session_key和openid, openid返回前端,session_key保存(緩存)解密用
注意:一個(ge) code隻能換取一次;
再次調用 wx.login, 會(hui) 導致上一次的 session_key 失效,解密出來的都是亂(luan) 碼
2. 解密
前端先調 wx.getUserInfo 得到encryptData
用login返回的openid,encryptData 調後端解密
剛開始按開發文檔,用C# 係統自帶AES解密失敗
報“填充無效,無法被移除”異常
在網上扒拉了一圈,也沒找到有用的信息,最終在github上,找帶了參考代碼,自己再改改,才解密成功
代碼本身沒啥牛逼的,希望貼出來能對後麵的開發夥(huo) 伴有所幫助 :)