收藏
回答

小程序获取手机号bug,偶尔出现让人抓狂!!!

问题类型 API/组件名称 AppID 微信版本 基础库版本
Bug 0 wxe45c05ec48579462 7.0.3 7.0.3

- 当前 Bug 的表现(可附上截图)

有时候点击获取手机号按钮一次不管用,需要多次点击才可以!!!!!!!


1、偶尔点击无响应

点击获取手机号按钮

<button style="display: inline-block;border-radius: 50px;background: #ebc64b;padding: 15px 25px;box-shadow: 4px 7px 7px rgba(164, 144, 85, .3);" open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber">解锁我的测试报告</button>

没有调用相关方法

getPhoneNumber: function (e) {

wx.login({

success: function (r) {

console.log(e.detail.errMsg);

console.log(e.detail.iv);

console.log(e.detail.encryptedData);

console.log(r.code);

2、有时点击了,也响应了,但是没有传上来参数encryptedData和iv


2019-04-13 11:46:09

[INFO]-[Thread: http-bio-443-exec-15]-[com.jmwyw.action.WxUserInfoController.getPhoneNumber()]: 

 ----------------- encryptedData

undefined

2019-04-13 11:46:09

[INFO]-[Thread: http-bio-443-exec-15]-[com.jmwyw.action.WxUserInfoController.getPhoneNumber()]: 

 ----------------- session_key

aug6AQmtUWAPKuL16+QR/Q==

2019-04-13 11:46:09

[INFO]-[Thread: http-bio-443-exec-15]-[com.jmwyw.action.WxUserInfoController.getPhoneNumber()]: 

 ----------------- iv

undefined

3、有时候数据传上来了,但是,解密出错


有两组数据,第一次点击获取失败,紧接着再次点击调用成功

result = AesCbcUtil.decrypt("p3QhMucG/aQijjxCRcK4eIXHQINJGW15uBxG3DdmvRRDchxLIrnc63fs06Q4i98RqiPyJH0jlepTUrh/LhzLEARXkLrTT8Q0H8HQC3LpwusYYfiWXcQMayGOoiAUiPqCU6Y+pdrwuPSCJktLU8d/A0xneqnWWqrNPmjqgtoyP5YOtLbuYIeTJ8VTMF5AkWnA5NkT9AHSDMMIM47nCWoxTw==",

"QI0UESfcf7Hmm8Za8MaO+g==", "OPxEk42/SpgdXpau8CZ3og==");

System.out.print("\r\n ----------------- decrypt result \r\n"+result);

result = AesCbcUtil.decrypt("V4svsc89WcGrClnTgQdVYsWJqG4m48Fus1BkyAF5YtlIM93E86Y6QiF1wSSW35Iizi2ewMzvG5al3qlCrExjynHZRyRmqb0ajsf9HvFQqkPBxOA0hixBnUo4jPfyiNluemL9ch7J0aeswB8KS/EgnLmXE+Rt17Iev22p0i9uXCk2gM3/Krbc8DQ4/fF4rhhLP5+4/kLjr2xdLRqmvdUmzQ==",

"QI0UESfcf7Hmm8Za8MaO+g==", "swCamFyUjAPosQTZMQWzCA==");

System.out.print("\r\n ----------------- decrypt result \r\n"+result);


    

    public static String decrypt(String data, String key, String iv) throws Exception {

//      initialize();


byte[] encrypData = Base64.decodeBase64(data);

byte[] ivData = Base64.decodeBase64(iv);

byte[] sessionKey = Base64.decodeBase64(key);

String str = "";

try {

// str = decrypt(sessionKey, ivData, encrypData);

AlgorithmParameterSpec ivSpec = new IvParameterSpec(ivData);

Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");

SecretKeySpec keySpec = new SecretKeySpec(sessionKey, "AES");

cipher.init(Cipher.DECRYPT_MODE, keySpec, ivSpec);

// 解析解密后的字符串

str= new String(cipher.doFinal(encrypData), "UTF-8");


第一组数据调用失败

2019-04-15 09:48:38

[ERROR]-[Thread: main]-[com.jmwyw.action.utils.AesCbcUtil.decrypt()]: javax.crypto.BadPaddingException: Given final block not properly padded

2019-04-15 09:48:38

[INFO]-[Thread: main]-[com.jmwyw.action.utils.AesCbcUtil.decrypt()]: 

小程序返回手机号解密出错!!!!!

data:

p3QhMucG/aQijjxCRcK4eIXHQINJGW15uBxG3DdmvRRDchxLIrnc63fs06Q4i98RqiPyJH0jlepTUrh/LhzLEARXkLrTT8Q0H8HQC3LpwusYYfiWXcQMayGOoiAUiPqCU6Y+pdrwuPSCJktLU8d/A0xneqnWWqrNPmjqgtoyP5YOtLbuYIeTJ8VTMF5AkWnA5NkT9AHSDMMIM47nCWoxTw==

key:QI0UESfcf7Hmm8Za8MaO+g==

iv:OPxEk42/SpgdXpau8CZ3og==



第二组数据调用成功,如期返回数据

{"phoneNumber":"13706896229","purePhoneNumber":"13706896229","countryCode":"86","watermark":{"timestamp":1555122913,"appid":"wx4902ff5a6ed1fe4a"}}


- 预期表现


- 复现路径

不确定出现,无法准确复现

- 提供一个最简复现 Demo


回答关注问题邀请回答
收藏

2 个回答

  • 李晓峰
    李晓峰
    2019-07-19

    同样遇到了,怎么解决呢,很急

    2019-07-19
    有用 1
    回复
  • sing😎
    sing😎
    2019-04-15

    小程序获取手机号bug,不定期出现让人抓狂!!!!

    点击获取手机号按钮

    1、有时候没有响应

    2、有时候传上来的数据为空

    3、有时候传过来的密码不对


    2019-04-15
    有用
    回复 7
    • 杉杉爱吃鱼🐳
      杉杉爱吃鱼🐳
      2019-04-18

      我跟你是同一个问题,现在问题已解决,建议在用户登录态没有过期的情况下,不要随意调用wx.login()刷新code

      2019-04-18
      回复
    • sing😎
      sing😎
      2019-04-24

      我只在点击获取手机号按钮的时候掉用过wx.login()一次,之后会发生三种错误情况:

      1、有时候没有响应,就是说微信并没有掉用喔写好的事件响应代码。

      2、有时候传上来的数据为空

      3、有时候传过来的密码不对

      但是再点一两次就可以正常获得手机号,也有人反复点多次才行。


      2019-04-24
      回复
    • 冷漠铁锤王富贵
      冷漠铁锤王富贵
      2019-04-25回复sing😎

      这个就是你调用了wx.login导致的,你可以试试等5分钟以上点击获取手机号按钮,应该就不是偶尔出现而是必现了,至于怎么处理可以去网上搜一下

      2019-04-25
      回复
    • ㅤ良人
      ㅤ良人
      2019-05-31回复冷漠铁锤王富贵

      我的就这个问题 ,第一次解密异常 短时间内再次点击就好了,退出来多次点击也没问题 就是一两分钟后再获取会和之前一样 解密失败

      2019-05-31
      回复
    • 思儿
      思儿
      2019-08-27回复ㅤ良人

      那你这问题解决了吗?我现在也遇到这个问题,已经改成检测session_key 是否过期,如果过期才重新执行login接口,没有过期就把session_key保存下来,再次当做参数传到后端获取手机号,感觉应该没有问题了,可是频繁操作获取手机号还是会出现解密失败


      2019-08-27
      回复
    查看更多(2)
登录 后发表内容