微信小程序 wx.login解密出现乱码的问题解决办法


Posted in Javascript onMarch 10, 2017

微信小程序 wx.login解密出现乱码的问题解决办法

最近在给公司开发微信小程序,需要用到微信登录,根据文档要求需要把获取的用户信息按照AES进行解密。

我使用的是官方提供的PHP demo,拷贝到程序中,测试发现,解密之后的数据前面有一串乱码。

 微信小程序 wx.login解密出现乱码的问题解决办法

类似于这样子的,前面一段是乱码。

 经过仔细的检查,发现官方的提供的demo中的帐号和机密之后的信息是可以解密的,这就说明解密代码是没有问题的。 

后来查询微信开发者社区,找到好多解密失败。其中一个回答说是因为多次调用wx.login之后导致的问题。

终于看到解决方案,于是赶紧去看我的代码。可是查找半天发现只调用了一次,根本不是这个问题。

有一次走到了死胡同,没办法了,还是看代码吧。

根据文档,应该是先调用wx.login(),成功之后再调用wx.getUserInfo(), 于是我就想,会不会是我把wx.getUserInfo()获取到的值没有正确的传给服务器呢?

既然不确定,那就得看看。于是,打印wx.getUserInfo()的返回值,是这样子的

微信小程序 wx.login解密出现乱码的问题解决办法

 看到结果之后我就跟我的请求服务器的参数挨个对照,当看到encryptData时,发现了问题,文档上写的是应该把encryptedData的值用于解密,而我则是把encryptData的值

取出来了,所以解密结果就不正确了。

至此,发现问题,把参数改成encryptedData之后解密成功。

 总结一下问题: 由于wx.getUserInfo()返回值中encryptData和encryptedData参数名称过于相似,导致我用错变量,实在是不应该。

至于为什么微信要多返回一个没用的参数(目前还没发现它的作用),我就不知到了,而且文档上根本就没提到这个。

 微信小程序 wx.login解密出现乱码的问题解决办法

  希望大家编码的时候能够细心一点,不要犯我这样的错误。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
使用Jquery打造最佳用户体验的登录页面的实现代码
Jul 08 Javascript
关于JavaScript中原型继承中的一点思考
Jul 25 Javascript
JavaScript中对象property的读取和写入方法介绍
Dec 30 Javascript
详解JavaScript中的forEach()方法的使用
Jun 08 Javascript
Javascript函数式编程语言
Oct 11 Javascript
深入理解JavaScript中为什么string可以拥有方法
May 24 Javascript
jquery插件bootstrapValidator数据验证详解
Nov 09 Javascript
JS求解三元一次方程组值的方法
Jan 03 Javascript
使用Bootstrap打造特色进度条效果
May 02 Javascript
vue.js的安装方法
May 12 Javascript
详解vuex中action何时完成以及如何正确调用dispatch的思考
Jan 21 Javascript
vue移动端弹起蒙层滑动禁止底部滑动操作
Jul 22 Javascript
微信小程序 出现47001 data format error原因解决办法
Mar 10 #Javascript
BootstrapValidator实现注册校验和登录错误提示效果
Mar 10 #Javascript
Bootstrap fileinput组件封装及使用详解
Mar 10 #Javascript
Bootstrap栅格系统使用方法及页面调整变形的解决方法
Mar 10 #Javascript
Node.js中.pfx后缀文件的处理方法
Mar 10 #Javascript
Vue.js结合bootstrap实现分页控件
Mar 10 #Javascript
js获取ip和地区
Mar 10 #Javascript
You might like
PHP5中MVC结构学习
2006/10/09 PHP
php实现的遍历文件夹下所有文件,编辑删除
2010/01/05 PHP
如何使用纯PHP实现定时器任务(Timer)
2015/07/31 PHP
老生常谈PHP面向对象之解释器模式
2017/05/17 PHP
老生常谈PHP面向对象之标识映射
2017/06/21 PHP
laravel-admin select框默认选中的方法
2019/10/03 PHP
JavaScript 撑出页面文字换行
2009/06/15 Javascript
基于jquery.Jcrop的头像编辑器
2010/03/01 Javascript
javascript实现playfair和hill密码算法
2014/12/07 Javascript
jQuery如何解决IE输入框不能输入的问题
2016/10/08 Javascript
ionic实现底部分享功能
2017/05/11 Javascript
详解promise.then,process.nextTick, setTimeout 以及 setImmediate的执行顺序
2018/11/21 Javascript
使用electron制作满屏心特效的示例代码
2018/11/27 Javascript
为什么要使用Vuex的介绍
2019/01/19 Javascript
layer更改皮肤的实现方法
2019/09/11 Javascript
vue自定义插件封装,实现简易的elementUi的Message和MessageBox的示例
2020/11/20 Vue.js
快速入门python学习笔记
2017/12/06 Python
python3.6.3安装图文教程 TensorFlow安装配置方法
2020/06/24 Python
python自动化生成IOS的图标
2018/11/13 Python
python使用wxpy轻松实现微信防撤回的方法
2019/02/21 Python
python可视化爬虫界面之天气查询
2019/07/03 Python
解决Pytorch 训练与测试时爆显存(out of memory)的问题
2019/08/20 Python
Pytorch 卷积中的 Input Shape用法
2020/06/29 Python
CSS3的Border-radius轻松制作圆角
2012/12/24 HTML / CSS
德国家具在线:Fashion For Home
2017/03/11 全球购物
世界闻名的衬衫制造商:Savile Row Company
2018/07/30 全球购物
欧洲著名的二手奢侈品网站:Vestiaire Collective
2020/03/07 全球购物
校园十佳歌手策划书
2014/01/22 职场文书
领导接待方案
2014/03/13 职场文书
无传销社区工作方案
2014/05/13 职场文书
宪法宣传周工作方案
2014/05/26 职场文书
小学班主任自我评价
2015/03/11 职场文书
社团招新宣传语
2015/07/13 职场文书
幼儿园春季开学通知
2015/07/16 职场文书
Win11 S Mode版本泄露 正式上线后叫做Windows 11 SE
2021/11/21 数码科技
解决Redis启动警告问题
2022/02/24 Redis