微信小程序 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 相关文章推荐
ASP.NET jQuery 实例7 通过jQuery来获取DropDownList的Text/Value属性值
Feb 03 Javascript
解决JS组件bootstrap table分页实现过程中遇到的问题
Apr 21 Javascript
javascript类型系统——undefined和null全面了解
Jul 13 Javascript
10个经典的网页鼠标特效代码
Jan 09 Javascript
js中的闭包学习心得
Feb 06 Javascript
Vue 中对图片地址进行拼接的方法
Sep 03 Javascript
移动端如何用下拉刷新的方式实现上拉加载
Dec 10 Javascript
详解JS实现简单的时分秒倒计时代码
Apr 25 Javascript
基于JS实现数字动态变化显示效果附源码
Jul 18 Javascript
Vue调用后端java接口的实例代码
Oct 28 Javascript
Element Cascader 级联选择器的使用示例
Jul 27 Javascript
vue大型项目之分模块运行/打包的实现
Sep 21 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
收集的DedeCMS一些使用经验
2007/03/17 PHP
CI配置多数据库访问的方法
2016/03/28 PHP
PHP给文字内容中的关键字进行套红处理
2016/04/12 PHP
基于jquery的3d效果实现代码
2011/03/23 Javascript
js+css实现增加表单可用性之提示文字
2013/06/03 Javascript
浅谈jquery回调函数callback的使用
2015/01/30 Javascript
浅谈setTimeout 与 setInterval
2015/06/23 Javascript
js显示当前日期时间和星期几
2015/10/22 Javascript
使用jQuery操作HTML的table表格的实例解析
2016/03/13 Javascript
jquery实现无刷新验证码的简单实例
2016/05/19 Javascript
js判断请求的url是否可访问,支持跨域判断的实现方法
2016/09/17 Javascript
AngularJS基于ngInfiniteScroll实现下拉滚动加载的方法
2016/12/14 Javascript
nodejs集成sqlite使用示例
2017/06/05 NodeJs
基于JavaScript实现图片连播和联级菜单实例代码
2017/07/28 Javascript
详解vue axios二次封装
2018/07/22 Javascript
vue中node_modules中第三方模块的修改使用详解
2019/05/31 Javascript
微信JS-SDK实现微信会员卡功能(给用户微信卡包里发送会员卡)
2019/07/25 Javascript
JavaScript变量基本使用方法实例分析
2019/11/15 Javascript
[57:22]2018DOTA2亚洲邀请赛 4.7总决赛 LGD vs Mineski 第五场
2018/04/10 DOTA
Python2.x与Python3.x的区别
2016/01/14 Python
深入理解Django中内置的用户认证
2017/10/06 Python
Python中的单继承与多继承实例分析
2018/05/10 Python
用python生成(动态彩色)二维码的方法(使用myqr库实现)
2019/06/24 Python
Python使用matplotlib 模块scatter方法画散点图示例
2019/09/27 Python
FC-Moto美国:欧洲最大的摩托车服装和头盔商店之一
2019/08/24 全球购物
Magee 1866官网:Donegal粗花呢外套和大衣专家
2019/11/01 全球购物
正规的求职信范文分享
2013/12/11 职场文书
信息技术专业个人自我评价
2013/12/11 职场文书
电子商务助理求职自荐信
2014/04/10 职场文书
关于青春的演讲稿
2014/05/05 职场文书
中国梦演讲稿范文
2014/08/28 职场文书
2014年仓库工作总结
2014/11/20 职场文书
节水倡议书
2015/01/19 职场文书
个人总结与自我评价2015
2015/03/11 职场文书
经济纠纷起诉状
2015/05/20 职场文书
婚礼伴郎致辞
2015/07/28 职场文书