微信小程序 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代码
Nov 09 Javascript
js通过googleAIP翻译PHP系统的语言配置的实现代码
Oct 17 Javascript
使用jQuery清空file文件域的解决方案
Apr 12 Javascript
完美兼容各大浏览器获取HTTP_REFERER方法总结
Jun 24 Javascript
JavaScript中各种引用类型的常用操作方法小结
May 05 Javascript
vue.js学习之vue-cli定制脚手架详解
Jul 02 Javascript
JavaScript中正则表达式判断匹配规则及常用方法
Aug 03 Javascript
基于JSON数据格式详解
Aug 31 Javascript
在Vue项目中用fullcalendar制作日程表的示例代码
Aug 04 Javascript
vue使用高德地图根据坐标定位点的实现代码
Aug 22 Javascript
浅谈vue权限管理实现及流程
Apr 23 Javascript
小程序实现密码输入框
Nov 16 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
咖啡知识 除了喝咖啡还有那些知识点
2021/03/06 新手入门
深入PHP数据缓存的使用说明
2013/05/10 PHP
Mootools 1.2教程 选项卡效果(Tabs)
2009/09/15 Javascript
xss文件页面内容读取(解决)
2010/11/28 Javascript
JavaScript实现的图像模糊算法代码分享
2014/04/22 Javascript
Javascript Objects详解
2014/09/04 Javascript
jQuery实现判断滚动条到底部
2015/06/23 Javascript
浅谈js中的变量名和函数名重名
2017/02/13 Javascript
js实现图片放大并跟随鼠标移动特效
2019/01/18 Javascript
ES6 新增的创建数组的方法(小结)
2019/08/01 Javascript
通过实例了解JS 连续赋值
2019/09/24 Javascript
Nodejs + Websocket 指定发送及群聊的实现
2020/01/09 NodeJs
vantUI 获得piker选中值的自定义ID操作
2020/11/04 Javascript
在vue中通过render函数给子组件设置ref操作
2020/11/17 Vue.js
python逐行读取文件内容的三种方法
2014/01/20 Python
数据清洗--DataFrame中的空值处理方法
2018/07/03 Python
对python_discover方法遍历所有执行的用例详解
2019/02/13 Python
python字典改变value值方法总结
2019/06/21 Python
python nmap实现端口扫描器教程
2020/05/28 Python
python二进制读写及特殊码同步实现详解
2019/10/11 Python
Python基于百度AI实现OCR文字识别
2020/04/02 Python
通过代码实例了解Python异常本质
2020/09/16 Python
一个入门级python爬虫教程详解
2021/01/27 Python
html5基础标签(html5视频标签 html5新标签用法)
2013/12/30 HTML / CSS
美国男女折扣服饰百货连锁店:Stein Mart
2017/05/02 全球购物
英国电气世界:Electrical World
2019/09/08 全球购物
企业为何需要商业计划书
2013/12/26 职场文书
全国道德模范事迹
2014/02/01 职场文书
经典促销广告词大全
2014/03/19 职场文书
养牛场项目建议书
2014/05/13 职场文书
岗位聘任报告
2015/03/02 职场文书
党员志愿者服务倡议书
2015/04/29 职场文书
银行文明优质服务培训心得体会
2016/01/09 职场文书
vue点击弹窗自动触发点击事件的解决办法(模拟场景)
2021/05/25 Vue.js
ORACLE数据库应用开发的三十个注意事项
2021/06/07 Oracle
Golang 字符串的常见操作
2022/04/19 Golang