Menu
小程序资讯
小程序资讯
微信小程序用户信息解密 C#
时间:2016-10-13 18:24:00
  • 背景

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

所以在做小程序时,要实现会员的互通,想到的是 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

 

  • 实现
  1. 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上,找带了参考代码,自己再改改,才解密成功

  • 结语

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