微信小程序 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 相关文章推荐
Extjs优化(一)删除冗余代码提高运行速度
Apr 15 Javascript
js 走马灯简单实例
Nov 21 Javascript
SuperSlide2实现图片滚动特效
Jun 20 Javascript
jQuery实现首页图片淡入淡出效果的方法
Jun 10 Javascript
点评js异步加载的4种方式
Dec 22 Javascript
JS获取鼠标坐标位置实例分析
Jan 20 Javascript
Winform客户端向web地址传参接收参数的方法
May 17 Javascript
BootStrap注意事项小结(五)表单
Mar 10 Javascript
使用JavaScript实现一个小程序之99乘法表
Sep 21 Javascript
详解如何制作并发布一个vue的组件的npm包
Nov 10 Javascript
JS Math对象与Math方法实例小结
Jul 05 Javascript
vue el-table实现递归嵌套的示例代码
Aug 14 Vue.js
微信小程序 出现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
实用函数5
2007/11/08 PHP
php Try Catch异常测试
2009/03/01 PHP
PHP转换IP地址到真实地址的方法详解
2013/06/09 PHP
CodeIgniter输出中文乱码的两种解决办法
2014/06/12 PHP
php静态成员方法和静态的成员属性的使用方法
2017/10/26 PHP
PHP中PCRE正则解析代码详解
2019/04/26 PHP
php设计模式之观察者模式实例详解【星际争霸游戏案例】
2020/03/30 PHP
神奇的代码 通杀各种网站-可随意修改复制页面内容
2008/07/17 Javascript
JavaScript实现点击按钮后变灰避免多次重复提交
2013/07/15 Javascript
jquery封装的对话框简单实现
2013/07/21 Javascript
js获取或设置当前窗口url参数的小例子
2013/10/14 Javascript
instanceof和typeof运算符的区别详解
2014/01/06 Javascript
使用javascript实现判断当前浏览器
2015/04/14 Javascript
13个PHP函数超实用
2015/10/21 Javascript
JS如何判断浏览器类型和详细区分IE各版本浏览器
2017/03/04 Javascript
vue动态路由实现多级嵌套面包屑的思路与方法
2017/08/16 Javascript
微信小程序 获取session_key和openid的实例
2017/08/17 Javascript
详解wow.js中各种特效对应的类名
2017/09/13 Javascript
windows及linux环境下永久修改pip镜像源的方法
2016/11/28 Python
python读取图片并修改格式与大小的方法
2018/07/24 Python
Python设计模式之建造者模式实例详解
2019/01/17 Python
PyQt QListWidget修改列表项item的行高方法
2019/06/20 Python
pytorch masked_fill报错的解决
2020/02/18 Python
PyPDF2读取PDF文件内容保存到本地TXT实例
2020/05/12 Python
python中HTMLParser模块知识点总结
2021/01/25 Python
HTML5 图片悬停放大的实现代码示例
2019/12/04 HTML / CSS
阿联酋航空假期:Emirates Holidays
2018/03/20 全球购物
医药类个人求职的自我评价
2014/02/12 职场文书
大学军训感言300字
2014/03/09 职场文书
银行贷款收入证明
2014/10/17 职场文书
酒店财务经理岗位职责
2015/04/08 职场文书
2015年话务员工作总结
2015/04/29 职场文书
返乡农民工证明
2015/06/24 职场文书
追讨欠款律师函
2015/06/24 职场文书
2016年社区六一儿童节活动总结
2016/04/06 职场文书
selenium.webdriver中add_argument方法常用参数表
2021/04/08 Python