微信小程序 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 相关文章推荐
js实现一个省市区三级联动选择框代码分享
Mar 06 Javascript
关于删除时的提示处理(确定删除吗)
Nov 03 Javascript
JavaScript测试工具之Karma-Jasmine的安装和使用详解
Dec 03 Javascript
原生js的数组除重复简单实例
May 24 Javascript
JS图片放大效果简单实现代码
Sep 08 Javascript
js实现点击图片自动提交action的简单方法
Oct 16 Javascript
JavaScript 轮播图和自定义滚动条配合鼠标滚轮分享代码贴
Oct 28 Javascript
js获取地址栏参数的两种方法
Jun 27 Javascript
vue.js 使用axios实现下载功能的示例
Mar 05 Javascript
从Vuex中取出数组赋值给新的数组,新数组push时报错的解决方法
Sep 18 Javascript
vue 判断两个时间插件结束时间必选大于开始时间的代码
Nov 04 Javascript
jQuery+ajax实现文件上传功能
Dec 22 jQuery
微信小程序 出现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
mysql 中InnoDB和MyISAM的区别分析小结
2008/04/15 PHP
Yii框架组件和事件行为管理详解
2016/05/20 PHP
Laravel框架搜索分页功能示例
2019/02/01 PHP
在Laravel中使用GuzzleHttp调用第三方服务的API接口代码
2019/10/15 PHP
JavaScript 事件的一些重要说明
2009/10/25 Javascript
灵活应用js调试技巧解决样式问题的步骤分享
2012/03/15 Javascript
javascript中普通函数的使用介绍
2013/12/19 Javascript
JQuery弹出炫丽对话框的同时让背景变灰色
2014/05/22 Javascript
使用JavaScript实现ajax的实例代码
2016/05/11 Javascript
关于JavaScript 原型链的一点个人理解
2016/07/31 Javascript
JS中showModalDialog关闭子窗口刷新主窗口用法详解
2017/03/25 Javascript
JS使用正则表达式获取小括号、中括号及花括号内容的方法示例
2018/06/01 Javascript
JQuery实现ajax请求的示例和注意事项
2018/12/10 jQuery
vue实现todolist功能、todolist组件拆分及todolist的删除功能
2019/04/11 Javascript
Vue 图片压缩并上传至服务器功能
2020/01/15 Javascript
[54:19]完美世界DOTA2联赛PWL S2 Magma vs PXG 第二场 11.28
2020/12/01 DOTA
Python实现子类调用父类的方法
2014/11/10 Python
Python编程之字符串模板(Template)用法实例分析
2017/07/22 Python
Python编程实现的图片识别功能示例
2017/08/03 Python
python+opencv实现高斯平滑滤波
2020/07/21 Python
详解Python3中setuptools、Pip安装教程
2019/06/18 Python
Python实现12306火车票抢票系统
2019/07/04 Python
在Pycharm中调试Django项目程序的操作方法
2019/07/17 Python
在vscode中配置python环境过程解析
2019/09/28 Python
Django框架实现在线考试系统的示例代码
2020/11/30 Python
python subprocess pipe 实时输出日志的操作
2020/12/05 Python
python help函数实例用法
2020/12/06 Python
Booking.com西班牙:全球酒店预订
2018/03/30 全球购物
幼儿园庆六一活动方案
2014/03/06 职场文书
运动会演讲稿200字
2014/08/25 职场文书
个人批评与自我批评材料
2014/10/17 职场文书
水电施工员岗位职责
2015/04/11 职场文书
Python+uiautomator2实现自动刷抖音视频功能
2021/04/29 Python
pandas取dataframe特定行列的实现方法
2021/05/24 Python
Spring事务管理下synchronized锁失效问题的解决方法
2022/03/31 Java/Android
Python中的协程(Coroutine)操作模块(greenlet、gevent)
2022/05/30 Python