欢迎光临,了解微信小程序开发,就上易用通!

新手跳坑指南《三十七》openid与unionid(微信登录问题必备)

发布:2018-01-30 11:51浏览: 来源:网络 作者:cola

我感觉最近对unionid和openid的一些知识的需求开始变多了,所以特此将一些有意义的讨论附在此处
讨论一:小程序 怎么获取 unionid

1.加入开放平台 
2.获取session_key
3.wx.getUserInfo获取到encryptedData和iv 传给服务器
4.sessionKey+iv解密encryptedData得到带unionId的json
开放平台 需要先认证
session_key是前台根据wx.login的code换来的(服务器端必须要做好合理的缓存设计)
备注:wx.login的code只能使用一次 多次login或者随意 login会造成iv和encryptedData和session_key不对应而解密失败

讨论二:你们有用过这个吗?我想取unionId 
1.png
这个cheksession我不太理解,我是要登录网站的用户,这个cheksession是检查微信登录还是网站登录呢?


openid不要再网络中传输
2.jpg
3.jpg
传encryptedData到服务端得到unionid;
cheksession就是检查有没有过期;
1、不依赖微信的的openid,登陆使用以前的系统(最多也就是绑定一下openid,微信和系统的账号绑定)
2、完全依赖,就需要使用

讨论三:关于这个,为什么我解密完少了unionId,有哪个小伙伴知道的吗
4.png

unionId不是要在开发者中心 绑定公众号才会有吗 
如果开发者有在多个公众号,或在公众号、移动应用之间统一用户帐号的需求,需要前往微信开放平台(open.weixin.qq.com)绑定公众号后,才可利用UnionID机制来满足上述需求。

讨论四:谁了解 openid、unionid的关系?

多个应用下的用户的openid不一样?那么,用户登录不同的业务模块,可能产生不同的账号,那就比较糟糕
看介绍说unionid是一致的,用unionid就可以避免这种情况发生?
微信用户登录认证这一套流程,是不是只有在使用微信登录、使用微信绑定本地账号的时候用,除此之外,在已经绑定过的用户只需要记录我们自己产生的session信息即可吧,无需要每次都去微信登录验证

对,保存在本地,用来验证用户身份的

还有个疑问:
       微信会员打开我门的小程序后,程序通过wx.login获得到code提交到服务端,服务器端再拿code向微信服务器请求就可以拿到openid了,然后我就可以直接用openid来绑定我们自己的会员系统。
       问题来了,那么wx.getUserInfo中的信息貌似没啥用了?
这个可以不用发请求就能获取用户信息,而且可以获取unionid

openid、unionid的区别,官方解释!
https://mp.weixin.qq.com/s?__biz=NzA3OTQ2OTgw&mid=204189507&idx=1&sn=58fd3df3a8323f6b7bfb2680f222c293&scene=5#rd
5.png
我不是简单的获取微信的用户信息,我们要求把微信用户最终绑定到我们的账号系统,也就是成为我们的用户。
说白点,我需要拿到用户的openid、unionid,这样一来,就可以绑定到我们的账号系统中,以后用户登录微信就直接关联我的会员系统了


那就需要,

但貌似通过code去微信只能拿到openid,不能拿到unionid,只能通过wx.getUserInfo中的encryptData来解密后拿到unionid
是这样吗?


讨论五:openid 用来干嘛的啊
后台唯一标识 当前用户

唯一标识不是unionid
unionid针对单个用户在不同平台中的唯一标识
6.png
简单说吧:你有一个公众号,有一个app,用户在这俩里面的openid是不同的,但是unionid是一样的





免责声明:本站所有文章和图片均来自用户分享和网络收集,文章和图片版权归原作者及原出处所有,仅供学习与参考,请勿用于商业用途,如果损害了您的权利,请联系网站客服处理。