# 前言
近期小程序更新的基础库
2.21.2
,微信官方对获取用户手机号的逻辑进行了安全升级(传送门:小程序基础库 2.21.2 更新 (opens new window)),接下来作者带你解读官方公告,进一步提升“面向公告编程”能力。
# 误区
# 1、为什么「bindgetphonenumber」事件回调中没有返回 code 参数?
① 确认当前基础库版本是否为
2.21.2
及以上。
② 目前开发者工具未兼容此表现(近期应该会同步),目前以真机调试
为准。
# 2、为什么我传了 code 后端报 40029 错误码?
① 手机号获取凭证
code
并非wx.login
获取的code
,而是button
组件open-type="getPhoneNumber"
通过bindgetphonenumber
事件回调获取的,具体参考手机号获取文档 (opens new window)。
② 手机号获取凭证code
有效期为 5 分钟,并且只能消费一次。确认是否过期或者已经被二次使用过。
# 3、这个更新是不是我一定要跟着修改自己的业务呢?
不一定需要,按照原来的逻辑去获取也没问题,只不过微信提供了更为安全的解密方案。
总结一句话就是:为了用户数据安全,从基础库2.21.2
开始就可以使用新的逻辑解密获取用户手机号,相关接口 phonenumber.getPhoneNumber (opens new window)。
# 4、为什么真机基础库已经是 2.21.2 了,但是还是没返回 code 参数?
正常情况下,基础库
2.21.2
对应的是客户端版本号为8.0.16
,如果你的版本低于8.0.16
并且是通过开发者工具向客户端推送的2.21.2
基础库,大几率不会返回code
参数,请手动更新微信版本。 基础库对应版本分布:传送门 (opens new window)。
# 最后
# 祝大家没有改不完的 bug 和踩不完的坑,有疑问欢迎发社区私信 (opens new window)(三连暗示)。