问题描述:
开发一个微信小程序,有个单独从公众号进入的页面,需要获取手机号,但是经常会后台解析手机号异常
原因分析:
根据微信官方文档和论坛中各个相同问题的解决方案,我觉得是后台解析的时候,session_key没有对上,导致了后台解析手机号的异常。
因为后台每次是从数据库取出来的session_key,然后再进行解析。小程序前端(我)和后台都是后来接手的,后台并不清楚是哪一步存入的session_key。
解决方案:
一开始想用wx.checkSession
先校验一下session_key
是否过期,但是发现了后台每次是从数据库取出来,所以并不清楚校验的session_key
是否是库里存的那个。
于是每次进入小程序页面时,都会在onLoad中调用wx.login
,将获取的code放在缓存中,并在wx.login
执行完毕后,唤起Button按钮,调用获取手机号的事件。
之后将缓存的code,连同Button获取手机号的事件返回的参数(iv和encryptedData)一起传给后台,让后台先解析code,获取session_key,再去解密encryptedData,获取手机号。
结果:
目前来看暂时没出现什么问题,有问题我会再更新