前言
近期小程序更新的基础库
2.21.2
,微信官方对获取用户手机号的逻辑进行了安全升级(传送门:小程序基础库 2.21.2 更新),接下来作者带你解读官方公告,进一步提升“面向公告编程”能力。
误区
-
1、为什么「bindgetphonenumber」事件回调中没有返回 code 参数?
① 确认当前基础库版本是否为
2.21.2
及以上。
② 目前开发者工具未兼容此表现(近期应该会同步),目前以真机调试
为准。
-
2、为什么我传了 code 后端报 40029 错误码?
① 手机号获取凭证
code
并非wx.login
获取的code
,而是button
组件open-type="getPhoneNumber"
通过bindgetphonenumber
事件回调获取的,具体参考手机号获取文档。
② 手机号获取凭证code
有效期为 5 分钟,并且只能消费一次。确认是否过期或者已经被二次使用过。
-
3、这个更新是不是我一定要跟着修改自己的业务呢?
不一定需要,按照原来的逻辑去获取也没问题,只不过微信提供了更为安全的解密方案。
总结一句话就是:为了用户数据安全,从基础库2.21.2
开始就可以使用新的逻辑解密获取用户手机号,相关接口 phonenumber.getPhoneNumber。
-
4、为什么真机基础库已经是 2.21.2 了,但是还是没返回 code 参数?
正常情况下,基础库
2.21.2
对应的是客户端版本号为8.0.16
,如果你的版本低于8.0.16
并且是通过开发者工具向客户端推送的2.21.2
基础库,大几率不会返回code
参数,请手动更新微信版本。
基础库对应版本分布:传送门。
最后
-
祝大家没有改不完的 bug 和踩不完的坑,有疑问欢迎在下方留言或者发社区私信。
为啥完成了认证,还是提示没有权限,小程序是企业的
<button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber"></button> Page({ getPhoneNumber (e) { console.log(e) }
报错:
Component "pages/mine/index" does not have a method "getPhoneNumber" to handle event "getphonenumber".
换成下面的
<button @getphonenumber="getPhoneNumber" />
wxml页面直接无法加载,这怎么回事?有那位大哥能解答一下吗
田文镜!!!!
一直授权登录跟微信版本有关系吗,用户说一直在授权手机号 ,微信版本是8.0.6
您好,我们用 code去获取用户手机号 报 40029 错误码,新建了一个小程序 用同样的代码去执行就不报错,大概是哪里除了问题呢?谢谢楼主指点。
在开发者工具里得到的数据既有code,又有encryptedData,这是正常的吗?
开发者工具还未兼容嘛
为什么我的code获取时32位而不是64位呢?每次都报40029
苹果6拿不到code
index.js?543d:1370 Component "pages/mine/index" does not have a method "getPhoneNumber" to handle event "getphonenumber".
<button @getphonenumber="getPhoneNumber" />