评论

【面向公告编程】关于 getPhoneNumber 安全升级后获取手机号的误区

【面向公告编程】关于 getPhoneNumber 安全升级后获取手机号的误区

前言

近期小程序更新的基础库 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 和踩不完的坑,有疑问欢迎在下方留言或者发社区私信。

最后一次编辑于  2021-12-30  
点赞 4
收藏
评论

20 个评论

  • NN.
    NN.
    2022-01-24

    ② 目前开发者工具未兼容此表现(近期应该会同步),目前以真机调试为准。

    请问开发者工具现在还没兼容此表现吗,我现在用开发者工具进行测试,还是获取不到code.

    2022-01-24
    赞同
    回复 2
  • 謝勃 Adam Shieh
    謝勃 Adam Shieh
    2022-01-18

    云调用openapi.phonenumber.getPhoneNumber具体是怎么用的   

    2022-01-18
    赞同
    回复
  • 謝勃 Adam Shieh
    謝勃 Adam Shieh
    2022-01-18

    云调用openapi.phonenumber.getPhoneNumber具体是怎么用的  ?哪个大神知道,在线等

    2022-01-18
    赞同
    回复
  • 海越
    海越
    2022-01-13

    业务逻辑改成解码code之后,老版本微信不返回code,那么老版本微信中的小程序不就用不了了吗。。。。

    2022-01-13
    赞同
    回复 1
    • brave
      brave
      2022-01-13
      旧接口的逻辑不受影响,增加一个code是为了更安全的去解密用户手机号,你的代码逻辑里可以通过判断基础库版本号或者code参数是否有返回来调用后端哪一个接口
      2022-01-13
      回复
  • 波潮
    波潮
    2022-01-11

    接口有问题吗?昨天可以的今天又不可以了,不知道问题出现在哪里


    2022-01-11
    赞同
    回复
  • Thomas Lambert
    Thomas Lambert
    2022-01-08

    服务端的phonenumber.getPhoneNumber第三方平台对应接口在哪


    2022-01-08
    赞同
    回复 3
    • Thomas Lambert
      Thomas Lambert
      2022-01-08
      没事了,找到了
      2022-01-08
      回复
    • brave
      brave
      发表于移动端
      2022-01-08回复Thomas Lambert
      好的👌
      2022-01-08
      回复
    • 謝勃 Adam Shieh
      謝勃 Adam Shieh
      2022-01-18
      云调用openapi.phonenumber.getPhoneNumber具体是怎么用的
      2022-01-18
      回复
  • 朴素的小啊峰
    朴素的小啊峰
    2022-01-07

    PC端 微信上打开小程序 获取不到code 还是我写的有问题

    2022-01-07
    赞同
    回复 1
    • brave
      brave
      2022-01-07
      PC端小程序基础库没有那么高的。。。。
      2022-01-07
      回复
  • 朝朝复逝
    朝朝复逝
    2021-12-28

    三星s8真机没有返回code:

    试了iphone12和小米10都能正常返回code:



    2021-12-28
    赞同
    回复 1
    • hyh阿
      hyh阿
      2022-01-04
      鸿蒙2.0也不获取不到code 解决了老哥
      2022-01-04
      回复
  • 诸葛亮的芭蕉扇
    诸葛亮的芭蕉扇
    2021-12-24

    为什么我真机测试返回的没有code,而是多了一个cloudId,这是怎么回事


    2021-12-24
    赞同
    回复 1
    • brave
      brave
      2021-12-24
      代码怎么写的?截图一下打印的结果?
      2021-12-24
      回复
  • 浴火
    浴火
    2021-12-22

    大佬,真机可以获得code,那phonenumber.getPhoneNumber怎么用呢?

    2021-12-22
    赞同
    回复 7
    • brave
      brave
      2021-12-22
      解密的。
      2021-12-22
      回复
    • 浴火
      浴火
      2021-12-23回复brave
      谢谢,能说的详细一点吗?
      2021-12-23
      回复
    • brave
      brave
      2021-12-23回复浴火
      现在新的安全策略就是 通过获取手机号获取凭证code,结合phonenumber.getPhoneNumber接口进行解密。
      2021-12-23
      回复
    • 浴火
      浴火
      2021-12-23回复brave
      好的,谢谢
      2021-12-23
      回复
    • 波潮
      波潮
      2022-01-11回复brave
      phonenumber.getPhoneNumber 接口返回的是明文把,不需要解密
      2022-01-11
      回复
    查看更多(2)

正在加载...

登录 后发表内容