部分小程序没法获取UnionId缘由

问题背景

  • 经过观察数据,发现有一部分用户是没法获取到UnionId的
    • 也就是接口返回的参数中不包含UnionId参数
  • 看了微信文档的解释,只要小程序在开放平台绑定,就必定会分配UnionId
  • 网上也有用户遇到这样的状况,没有解决

问题影响

使用微信小程序成功受权之后,下次在公众号中受权或在App中使用微信受权,没法识别是同一个微信用户,可能会出现一个微信用户绑定不一样App用户的状况。小程序

UnionID机制

微信对UnionId机制的原文解释

若是开发者拥有多个移动应用、网站应用、和公众账号(包括小程序),可经过unionid来区分用户的惟一性,由于只要是同一个微信开放平台账号下的移动应用、网站应用和公众账号(包括小程序),用户的unionid是惟一的。换句话说,同一用户,对同一个微信开放平台下的不一样应用,unionid是相同的。微信小程序

同一个微信开放平台下的相同主体的App、公众号、小程序,若是用户已经关注公众号,或者曾经登陆过App或公众号,则用户打开小程序时,开发者能够直接经过wx.login获取到该用户UnionID,无须用户再次受权。微信

注意: 后边这句话的描述网站

用户关注过公众号,或者曾经登陆过App或公众号,则用户打开小程序时,开发者能够直接经过wx.login获取到该用户UnionID接口

即:若是用户没有关注过公众号,或者没有登录过App,经过wx.login是没法获取到该用户UnionID,只能经过wx.getUserInfo来获取UnionId开发

经验证,系统不存在UnionId的小程序用户都是没有关注公众号或未在App中使用微信受权的用户文档

解决方案

  1. 获取小程序UnionId应该以wx.getUserInfo的UnionId为主
  2. wx.getUserInfo须要用户受权,产品方面,须要考虑用户拒绝受权的处理流程
相关文章
相关标签/搜索