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