微信小程序获取用户信息接口重大调整
参考微信官方的声明:
https://developers.weixin.qq.com/community/develop/doc/000cacfa20ce88df04cb468bc52801?token=838205899&lang=zh_CN
2021年4月13日后发布的小程序新版本,无法通过wx.getUserInfo与 button open-type="getUserInfo" 获取用户个人信息(头像、昵称、性别与地区)
打印日志,看到信息都是空:
avatarUrl: "https://thirdwx.qlogo.cn/mmopen/vi_32/POgEwh4mIHO4nibH0KlMECNjjGxQUq24ZEaGT4poC6icRiccVGKSyXwibcPq4BWmiaIGuG1icwxaQX6grC9VemZoJ8rg/132"
city: ""
country: ""
gender: 0
language: ""
nickName: "微信用户"
province: ""
头像是个写死的灰色头像。
同时,即便前端获取加密数据,后台解密出来的也是这种空数据。
本想趁 4月13日前感觉更新一版,就不修改这个接口了,但是发现开发工具已经严格执行这个规范了。 我也不想冒险,反正早晚都要改,干脆一步修改到位得了。
虽然官方说只会影响4-13之后发布的小程序,但是我感觉早晚会一刀切,全部禁止:
不推荐使用getUserInfo获取用户信息,预计自2021年4月13日起,getUserInfo将不再弹出弹窗,并直接返回匿名的用户个人信息
微信小程序为何要做这个调整
很多开发者在打开小程序时就通过组件方式唤起getUserInfo弹窗,如果用户点击拒绝,无法使用小程序,这种做法打断了用户正常使用小程序的流程,同时也不利于小程序获取新用户。
我觉得,这个理由说不通。毕竟用新的替代接口 wx.getUserProfile 也是这个交互效果。 而且更加体验不好,因为每次调用 wx.getUserProfile 都要弹窗授权。比 getUserInfo 只需要授权一次体验差多了。
其实,核心点就是,微信觉得用户昵称和头像是腾讯的私有财产,你们不要随便用。
兼容方案
参考:
https://developers.weixin.qq.com/miniprogram/dev/api/open-api/user-info/wx.getUserProfile.html
注意:
- pc 微信暂不支持wx.getUserProfile。
- 开发工具上需要将调试基础库选择 2.16.0,才支持。否则开发工具上无法调用 wx.getUserProfile
- 要调试不支持的情况,将基础库调到 2.10 之下。
wx.getUserProfile 的接口调用次数限制
wx.getUserProfile 属于被限频接口,小程序一次生命周期最多调用2次。
所以,对于我的报名人数统计小程序,为了不影响用户体验,最好是将用户头像、昵称缓存到本地。 下次使用时,优先从缓存读取数据。
详情参考:
https://developers.weixin.qq.com/miniprogram/dev/framework/performance/api-frequency.html
缓存数据的更新问题
个人中心,增加“更新头像昵称”功能。
微信关注我哦 👍
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式