前言
近期小程序更新的基础库
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 和踩不完的坑,有疑问欢迎在下方留言或者发社区私信。
② 目前开发者工具未兼容此表现(近期应该会同步),目前以
真机调试
为准。请问开发者工具现在还没兼容此表现吗,我现在用开发者工具进行测试,还是获取不到code.
云调用openapi.phonenumber.getPhoneNumber具体是怎么用的
云调用openapi.phonenumber.getPhoneNumber具体是怎么用的 ?哪个大神知道,在线等
业务逻辑改成解码code之后,老版本微信不返回code,那么老版本微信中的小程序不就用不了了吗。。。。
接口有问题吗?昨天可以的今天又不可以了,不知道问题出现在哪里
服务端的phonenumber.getPhoneNumber第三方平台对应接口在哪
PC端 微信上打开小程序 获取不到code 还是我写的有问题
三星s8真机没有返回code:
试了iphone12和小米10都能正常返回code:
为什么我真机测试返回的没有code,而是多了一个cloudId,这是怎么回事
大佬,真机可以获得code,那phonenumber.getPhoneNumber怎么用呢?