获取用户的unionId
发布于 4 年前 作者 wqiao 4342 次浏览 来自 分享

UnionID 机制说明
如果开发者拥有多个移动应用、公众账号、小程序等,可通过unionId来区分用户的唯一性。

不同账号(移动应用、公众号、小程序)用户的openId是不同的,但如果都绑定在同一个开放平台下,那么用户的unionId是唯一的。

即:同一用户,对同一个微信开放平台下的不同应用,UnionID是相同的。

怎么获取unionId
在微信开放平台下存在同主体的App、公众号、小程序。

  1. 静默获取unionId的条件
    用户关注了某个相同主体公众号,开发者可以直接通过 wx.login + code2Session 获取到该用户 UnionID。
    用户已经在某个相同主体App、公众号上进行过微信登录授权,开发者也可以直接通过 wx.login + code2Session 获取到该用户 UnionID。
    用户在小程序中支付完成后,开发者可以直接通过getPaidUnionId接口获取该用户的 UnionID。
  1. 用户主动授权获取unionId
  • button组件的属性设置为open-type=getUserInfo,用户点击时候会触发 bindgetuserinfo事件,可以从事件返回参数的 detail 字段中获取到加密后的用户信息包括unionId
  • 调用接口 wx.getUserInfo,从解密数据中获取 UnionID。注意本接口需要用户授权。

不依赖用户授权去获取用户信息
某些工具类的轻量小程序不需要登录行为,但是也想获取用户信息,那么就可以在 wx.getUserInfo 的时候加一个参数 withCredentials: false 直接获取到用户信息,可以少一次网络请求。

这样可以在不给用户弹窗授权的情况下直接展示用户的信息。

只能获取到用户的头像昵称等数据,拿不到unionId

关于OpenId和UnionId

OpenId 是一个用户对于一个小程序/公众号的标识,开发者可以通过这个标识识别出用户。

UnionId 是一个用户对于同主体微信小程序/公众号/APP的标识,开发者需要在微信开放平台下绑定相同账号的主体。开发者可通过UnionId,实现多个小程序、公众号、甚至APP 之间的数据互通了。

同一个用户的这两个 ID 对于同一个小程序来说是__永久不变__的,就算用户删了小程序,下次用户进入小程序,开发者依旧可以通过后台的记录标识出来。

回到顶部