背景
老朋友出席微信小程序的公测,由于公司之前已经存有自己的服务大号,累积转变了大量的会员
所以在搞小程序时,必须同时实现会员的互通,想起的就是 unionid
研发文档
wx.login(OBJECT)
调用USB以获取登入凭证(code)进而赚取用户登入态信息,包含用户的唯一标识(openid) 及本次登入的 可以话密钥(session_key)
参看:https://mp.weixin.qq.com/debug/wxadoc/dev/api/api-login.html?t=1474887500719
wx.getUserInfo(OBJECT)
以获取用户信息,须要先调用 wx.login USB
其中须要的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上,打听拎了参照代码,自己再干嘛,才解密顺利
结语
代码本身没啥牛逼的,期望贴出来能够对后面的研发伙伴有所协助 :)