微信小程序中用户唯一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
http://www.cnblogs.com/nosqlcoco/p/6105749.html
http://blog.csdn.net/u013803499/article/details/52873537
微信小程序中用户唯一ID的获取的更多相关文章
- 微信小程序中用户登录和登录态维护
提供用户登录以及维护用户的登录状态,是一个拥有用户系统的软件应用普遍需要做的事情.像微信这样的一个社交平台,如果做一个小程序应用,我们可能很少会去做一个完全脱离和舍弃连接用户信息的纯工具软件. 让用户 ...
- 全栈开发工程师微信小程序-中(下)
全栈开发工程师微信小程序-中(下) 微信小程序视图层 wxml用于描述页面的结构,wxss用于描述页面的样式,组件用于视图的基本组成单元. // 绑定数据 index.wxml <view> ...
- 在微信小程序中使用LeanCloud(一)
之前学习了微信小程序前端,使用到LeanCloud线上数据库 [传送门].作为一个前端开发人员,了解后端及数据库是学习工作的需要. LeanCloud直接登录,未注册直接创建账户.它是一款免费的线上数 ...
- 微信小程序中发送模版消息注意事项
在微信小程序中发送模版消息 参考微信公众平台Api文档地址:https://mp.weixin.qq.com/debug/wxadoc/dev/api/notice.html#模版消息管理 此参考地址 ...
- 全栈开发工程师微信小程序-中(中)
全栈开发工程师微信小程序-中(中) 开放能力 open-data 用于展示微信开放的数据 type 开放数据类型 open-gid 当 type="groupName" 时生效, ...
- 全栈开发工程师微信小程序-中
全栈开发工程师微信小程序-中 多媒体及其他的组件 navigator 页面链接 target 在哪个目标上发生跳转,默认当前小程序,可选值self/miniProgram url 当前小程序内的跳转链 ...
- 微信小程序 获得用户输入内容
在微信小程序里,如何获得用户输入的内容?? js: document.getElementById("Content").value jq:$("#Content&quo ...
- 微信小程序中target与currentTarget
target在事件流的目标阶段:currentTarget在事件流的捕获,目标及冒泡阶段.但事件流处于目标阶段,target与currentTarget指向一样, 而当处于捕获和冒泡阶段的时候,tar ...
- 微信小程序中视频的显示与隐藏
在微信小程序中实现视频的播放与暂停 需求: 视频列表中只能有一个视频在播放 点击视频实现播放与暂停功能 加载完成显示图片,点击后变为视频播放 从上次播放的位置进行播放 思路: 定义一个标记变量,控制视 ...
随机推荐
- 安卓手机安装 Charles 证书
1: 在 Charles 工具栏里点击 Help --- SSL Proxying --- Save Charles Root Certificate,生成 后缀名是 .cer 的文件, 然后上传到 ...
- POJ 3678 Katu Puzzle 2-SAT 强连通分量 tarjan
http://poj.org/problem?id=3678 给m条连接两个点的边,每条边有一个权值0或1,有一个运算方式and.or或xor,要求和这条边相连的两个点经过边上的运算后的结果是边的权值 ...
- Go语言特点
作者:asta谢链接:https://www.zhihu.com/question/21409296/answer/18184584来源:知乎 1.Go有什么优势 可直接编译成机器码,不依赖其他库,g ...
- CVE-2014-4113本地提权测试
CVE-2014-4113本地提权漏洞分析 By Netfairy 前言 2014年10月14日, Crowdstrike和FireEye发表了一篇文章, 描述了一个新的针对Windows的提权漏洞. ...
- bzoj 3926
后缀自动机扩展到树形结构上. 先建出大的Trie,然后我们得到了一棵Trie树,对于树上的每个节点,保存一个后缀自动机从根走它代表的字符串后到达的节点,每次其儿子就从父亲的这个节点开始扩展. /*** ...
- nlogn 求最长上升子序列 LIS
最近在做单调队列,发现了最长上升子序列O(nlogn)的求法也有利用单调队列的思想. 最长递增子序列问题:在一列数中寻找一些数,这些数满足:任意两个数a[i]和a[j],若i<j,必有a[i]& ...
- IIS Express并发数设置
今天将之前的一个瓦片图的服务迁移到了asp.net core试了一下,使用的时候感觉客户端刷新时有些慢,估计是并发连接数限制的原因. 由于这是一个开发中的版本,是用IIS Express部署的,IIS ...
- [Servlet]什么是Servlet
什么是Servlet Servlet是JavaEE三大组建之中的一个,是使用Java语言编写server端的程序,主要用来处理Web应用程序中的请求-响应. Servlet并没有main之类的执行方法 ...
- Android字体简述
Android是一个典型的Linux内核的操作系统.在Android系统中,主要有DroidSans和DroidSerif两大字体阵营,从名字就可以看出来,前者是无衬线字体,后者是衬线字体.具体来说, ...
- Ext表单提示方式:msgTarget
Ext.QuickTips.init(); Ext.form.Field.prototype.msgTarget = 'side'; Ext表单提示方式:msgTarget:有4中方式:qtip,t ...