小程序登陆后,wx.getUserInfo()无法获得unionId
发布于 5 年前 作者 cmo 4975 次浏览 来自 问答
  • 当前 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”

  }

}

3 回复

提供下openid,微信号以及appid

如果开发者拥有多个移动应用、网站应用、和公众帐号(包括小程序),可通过 UnionID 来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号(包括小程序),用户的 UnionID 是唯一的。换句话说,同一用户,对同一个微信开放平台下的不同应用,unionid是相同的。

绑定了开发者帐号的小程序,可以通过下面 4 种途径获取 UnionID。

  1. 调用接口 wx.getUserInfo,从解密数据中获取 UnionID。注意本接口需要用户授权,请开发者妥善处理用户拒绝授权后的情况。

  2. 如果开发者帐号下存在同主体的公众号,并且该用户已经关注了该公众号。开发者可以直接通过 wx.login + code2Session 获取到该用户 UnionID,无须用户再次授权。

  3. 如果开发者帐号下存在同主体的公众号或移动应用,并且该用户已经授权登录过该公众号或移动应用。开发者也可以直接通过 wx.login + code2Session 获取到该用户 UnionID ,无须用户再次授权。

  4. 小程序端调用云函数时,当满足 UnionID 获取条件时可在云函数中通过 cloud.getWXContext 获取 UnionID

参考文档:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/union-id.html

原因可能是:你没有先授权个人信息, 头像这个权限。调用接口 wx.getUserInfo,从解密数据中获取 UnionID。注意本接口需要用户授权,请开发者妥善处理用户拒绝授权后的情况。

回到顶部