小程序登录第一次总是会失败,第二次肯定成功pad block corrupted
<meta charset="utf-8">
在开发微信小程序过程中,遇到一个登录的问题。就是微信小程序登录操作的时候,第一次总是会失败,返回pad block corrupted
,然后再次登录的时候就会登录成功。出现这样的错误,百度原因大多数是说session_key
过期,到期去解密手机号数据的时候,解密出错。具体分析:
1、登录代码逻辑:
img
- 第一步是点击微信登录按钮获取微信手机号
- 第二步是获取手机号加密数据成功后,请求微信的登录接口
wx.login()
获取code
- 第三步是将
code
传到后台服务器去请求seesion_key
和openId
- 第四步是后台通过
session_key
和openId
解密手机号加密字符串,并进行自我登录系统的登录操作;
产生问题的原因:
这里描述的问题是出现在第四步的步骤中,原因是第三步获取的session_key
不正确,导致解密操作错误,返回pad block corrupted
。但是导致session_key
不正确的原因是第二步调用wx.login()
方法,会刷新session_key
。因为第一步获取的手机号加密数据是通过原来的session_key
加密的,现在session_key
刷新了,导致后台在第三步去获取seesion_key
的时候,获取的是新的seesion_key
,然后去解密的时候就报错了。
解决思路:
- 1.在调用获取手机号方法之前,调用
login()
方法,这样就能保证seesion_key
是一致的。 - 2.通过
wx.checkSession
方法判断当前seesion_key
是否过期,如果过期了,就调wx.login
方法。没有过期则直接跳过第二步、第三步,走第四步。
作者:莪的世界木有如果
链接:https://www.jianshu.com/p/f904e44a31f1
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
网友评论