微信小程序 wx.login解密用户信息与电话号码出现乱码、失败、(-41003)的问题解决办法

走过的坑.... 

写好的代码 明明解密是可以的 结果第二天再测试的时候 一个电话解密成功 昨天的电话解密失败.

然后开始寻找问题之旅.

1:查看打印信息

    把2个微信 返回的encryptedData、Vi与获取的SESSION_KEY打印.未发现问题. 解析后都是乱码.但是第一个电话可以正常解析,第二个电话依然解析失败.找到一条解决办法 说是有敏感信息 尝试修改解析的转码代码。

                        //$module = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');
//mcrypt_generic_init($module, $this->key, $aesIV);
//解密
//$decrypted = mdecrypt_generic($module, $aesCipher);
//mcrypt_generic_deinit($module);

//mcrypt_module_close($module);

                        openssl_decrypt( $aesCipher, "AES-128-CBC", $aesKey, 1, $aesIV);

    然后继续尝试 依然转码失败.

2:另翻到一条解决方法说是解析乱码 是因为有空格传送出现+号 尝试 使用 urlencode  进行祛除.  无效.

3:再次尝试前后代码是否一致 页面加入 header("Content-type: text/html; charset=utf-8"); 无效.

4:仔细查看代码,wx.login确保只是调用一次,未更新session_key导致失效.

5:最后继续查找小程序手册中,发现SESSION_KEY的有效期是不固定的,而忘记最初为什么写了固定的session时间进行更新.

   解决办法: 在判断缓存已经存在后 进行SESSION_KEY验证, 如果通过正常使用 如果未通过 重新wx.login进行更新SESSION_KEY.

                     wx.checkSession({
                success: function () {
                    resolve(sessionid);
                },
                fail: function () {
                    wx.login({
                        success: res => {
                            wx.request({
                                url: util.url.getsessionid,
                                data: { code: res.code },
                                success: function (session) {
                                    wx.setStorageSync('sessionid', session.data.sessionid);
                                    resolve(session.data.sessionid);
                                },
                            })
                        }
                    })
                }
            })

最终解决.

你可能感兴趣的:(微信小程序)