微信小程序如何获取用户unionId?

588 阅读1分钟

一: UnionID和OpenID

  • UnionID: 用户在微信开放平台帐号下的唯一标识UnionID,意思是只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号(包括小程序),用户的 UnionID 是唯一的。
  • OPenID: 用户在小程序的唯一标识

二: UnionID获取的途径

  1. 用户没有授权过小程序信息,或者和小程序同主体下的公众号或者其他应用
  • wx.getUserInfo 获取到用户的加密数据 encryptedData 和加密算法的初始向量iv
  • 将 encryptdata、iv 以及 code传给后端,后端再去通过接收到的encryptedData、iv以、code 以及之前的 session_key 解密出用户的 openid、unionid 等
  1. 用户登录过
  • 使用 wx.login 获取code
  • 传到后端,code换openid,unionId

三:实际项目中

在实际项目中,应该将两种情况兼容

  • wx.login 向后端上传 code 并且获取后端返回数据
  • 前端判断返回值中是否有 unionid 或者 unionid 是否为 null
  • null 的情况下去调用带有用户登录态的wx.getUserInfo()
  • 然后再将微信返回的 encryptedData 和 iv 返回给后端,后端解密出相应的信息后再返回给前端;