背景有幸参加微信小程序的内测,由于公司之前已经有自己的服务大号,积累转化了大量的会员所以在做小程序时,要实现会员的互通,想到的是 unionid开发文档wx.login(OBJECT)调用接口获取登录凭证(code)进而换取用户 ...
有幸参加微信小程序的内测,由于公司之前已经有自己的服务大号,积累转化了大量的会员 所以在做小程序时,要实现会员的互通,想到的是 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
前端先调 wx.login 得到code 后端换取session_key和openid, openid返回前端,session_key保存(缓存)解密用
注意:一个code只能换取一次; 再次调用 wx.login, 会导致上一次的 session_key 失效,解密出来的都是乱码 2. 解密 前端先调 wx.getUserInfo 得到encryptData 用login返回的openid,encryptData 调后端解密 刚开始按开发文档,用C# 系统自带AES解密失败
报“填充无效,无法被移除”异常 在网上扒拉了一圈,也没找到有用的信息,最终在github上,找带了参考代码,自己再改改,才解密成功
代码本身没啥牛逼的,希望贴出来能对后面的开发伙伴有所帮助 :) |