一: UnionID和OpenID
- UnionID: 用户在微信开放平台帐号下的唯一标识UnionID,意思是只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号(包括小程序),用户的 UnionID 是唯一的。
- OPenID: 用户在小程序的唯一标识
二: UnionID获取的途径
- 用户没有授权过小程序信息,或者和小程序同主体下的公众号或者其他应用
- wx.getUserInfo 获取到用户的加密数据 encryptedData 和加密算法的初始向量iv
- 将 encryptdata、iv 以及 code传给后端,后端再去通过接收到的encryptedData、iv以、code 以及之前的 session_key 解密出用户的 openid、unionid 等
- 用户登录过
- 使用 wx.login 获取code
- 传到后端,code换openid,unionId
三:实际项目中
在实际项目中,应该将两种情况兼容
- wx.login 向后端上传 code 并且获取后端返回数据
- 前端判断返回值中是否有 unionid 或者 unionid 是否为 null
- null 的情况下去调用带有用户登录态的wx.getUserInfo()
- 然后再将微信返回的 encryptedData 和 iv 返回给后端,后端解密出相应的信息后再返回给前端;