无论做什么项目,引用第三方的代码是很常见的事情,很多人对第三方的SDK都会有种莫名的信任感(至少我是这样),正是这种盲目的行为,导致了我在项目中犯了一个重大错误,影响了产品的线上使用。
我们目前做的是一个微信小程序项目,为了在项目中加入统计功能,使用了阿拉丁的统计SDK。在产品测试阶段,遇到了一个问题:小程序中调用wx.getShareInfo之后,把加密数据传到服务端进行解密,发生了解密失败的问题。并且发现了一个现象,每次新用户登录后,大概5分钟之内是正常的,之后就开始出现解密失败。分析了原因,解密失败只可能是sessionKey过期了,但是为什么会过期始终找不到原因。这个时候,我们犯了一个致命的错误,开始质疑是微信的bug,猜测可能开发版和体验版小程序有sessionKey过期的bug。并没有想到有可能是第三方SDK的问题。最终结果就是,产品上线之后依然存在这个问题。
这个时候才开始重新审视整个项目,才发现阿拉丁的SDK里也有wx.login的代码,这一步很可能导致登录态刷新,致使我们的sessionKey失效。果然,移除SDK后,一切运行正常了。
总结
微信小程序中使用第三方的代码,一定要谨慎,使用之前严格检查一下代码中是否有调用微信的API,可以全局搜索“wx.”,类似登录或者需要用户授权的API,很容易影响我们原有的功能和体验,一旦发现就需要逐个考察,查清楚会有哪些影响,最终权衡一下是否要使用第三方SDK