小程序登录第一次总是会失败,第二次肯定成功pad block corrupted

在开发微信小程序过程中,遇到一个登录的问题。就是微信小程序登录操作的时候,第一次总是会失败,返回pad block corrupted,然后再次登录的时候就会登录成功。出现这样的错误,百度原因大多数是说session_key过期,到期去解密手机号数据的时候,解密出错。具体分析:

1、登录代码逻辑:

image.png
  • 第一步是点击微信登录按钮获取微信手机号
  • 第二步是获取手机号加密数据成功后,请求微信的登录接口wx.login()获取code
  • 第三步是将code传到后台服务器去请求seesion_keyopenId
  • 第四步是后台通过session_keyopenId解密手机号加密字符串,并进行自我登录系统的登录操作;
产生问题的原因:

这里描述的问题是出现在第四步的步骤中,原因是第三步获取的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方法。没有过期则直接跳过第二步、第三步,走第四步。

你可能感兴趣的:(小程序登录第一次总是会失败,第二次肯定成功pad block corrupted)