- 当前 Bug 的表现(可附上截图)
如标题所述,getUserInfo() encryptedData解密后没有unionid
(微信公众平台的小程序账号已绑定了公众号,微信开放平台也帮定了同一公众号)
- 预期表现
在上述情况下,调用API时能获得unionId
- 复现路径
使用我们的APPID调登陆接口成功后再调wx.getUserInfo(),查看结果是否不包含unionId内容
- 提供一个最简复现 Demo
如下是调用该接口返回的解密后的结果(屏蔽了一些敏感信息):
{
“openId”: “oJEEZ******gDasmAHXrE_7****U”,
“nickName”: “Waikit”,
“gender”: 1,
“language”: “zh_CN”,
“city”: “Shenzhen”,
“province”: “Guangdong”,
“country”: “China”,
“avatarUrl”: “https://wx.qlogo.cn/mmopen/vi_**/iaRAVC3t5Ts2xzMHtjv2Oiag3ehLiaYvDQw07aP57TFqKK5W8IFNiaR6QAQicwSicDa1agjx5WIscUrqS3a3Nv3QBtibA/***”,
“watermark”: {
“timestamp”: 1542780768,
“appid”: “wxd60bb7*****ea6bc”
}
}
如果开发者拥有多个移动应用、网站应用、和公众帐号(包括小程序),可通过 UnionID 来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号(包括小程序),用户的 UnionID 是唯一的。换句话说,同一用户,对同一个微信开放平台下的不同应用,unionid是相同的。
绑定了开发者帐号的小程序,可以通过下面 4 种途径获取 UnionID。
调用接口 wx.getUserInfo,从解密数据中获取 UnionID。注意本接口需要用户授权,请开发者妥善处理用户拒绝授权后的情况。
如果开发者帐号下存在同主体的公众号,并且该用户已经关注了该公众号。开发者可以直接通过 wx.login + code2Session 获取到该用户 UnionID,无须用户再次授权。
如果开发者帐号下存在同主体的公众号或移动应用,并且该用户已经授权登录过该公众号或移动应用。开发者也可以直接通过 wx.login + code2Session 获取到该用户 UnionID ,无须用户再次授权。
小程序端调用云函数时,当满足 UnionID 获取条件时可在云函数中通过 cloud.getWXContext 获取 UnionID
参考文档:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/union-id.html