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