微信小程序中用户唯一ID的获取
折腾到半夜,搞得挺兴奋,总结一下,免得忘了:
1、微信小程序直接获得的是一些简单信息,基本无用
2、用户唯一标识是openid,还有一个unionid是关联多个公众号之类情况下用,我不大关心
3、在getUserInfo的返回数据中,有加密信息,
wx.getUserInfo({
success: function(res) {
}
})
res包括userInfo,iv,rawData,signature,encryptedData,这些东西的关系比较复杂,我理解是这样的:
1)userInfo包括简单的用户信息
2)重要信息在encryptedData中,解开后包括:
3)要解开的话,需要密文-encryptedData,向量-iv,密钥-session-key。密钥这里没有。
4)rawData,signature是来做校验的,不太关心
4、session-key的获取方式:
1)登录成功后,传给回调的参数包括一个code,但这个code会很快失效
2)通过调用
https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code
可以获得session-key和openid。除了code,其他参数很简单,文档里有说明。
在浏览器中测试没有问题,但是,在小程序中也不能运行,因为小程序只能访问认证过的服务器。换言之,必须要把这个东西放到服务器上,从微信中去调用服务器的页面,服务器的页面再去访问这个接口,然后再把数据反馈回来。
道理搞明白其实就很简单了,获得了openid,其实也没用必要再去解密了,因为那里除了openid,也没啥想要的东西。
我的小程序:简单账本
参考:
https://mp.weixin.qq.com/debug/wxadoc/dev/api/api-login.html#wxloginobject
http://bbs.umeng.com/thread-6081-1-1.html