有幸参加微信小程序的内测,由于公司之前已经有自己的服务大号,积累转化了大量的会员

所以在做小程序时,要实现会员的互通,想到的是 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上,找带了参考代码,自己再改改,才解密成功

企业网站建设

结语

代码本身没啥牛逼的,希望贴出来能对后面的开发伙伴有所帮助 :)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。