無(wú)論做什么項(xiàng)目围小,引用第三方的代碼是很常見的事情锨阿,很多人對(duì)第三方的SDK都會(huì)有種莫名的信任感(至少我是這樣)们豌,正是這種盲目的行為涯捻,導(dǎo)致了我在項(xiàng)目中犯了一個(gè)重大錯(cuò)誤,影響了產(chǎn)品的線上使用望迎。
我們目前做的是一個(gè)微信小程序項(xiàng)目障癌,為了在項(xiàng)目中加入統(tǒng)計(jì)功能,使用了阿拉丁的統(tǒng)計(jì)SDK辩尊。在產(chǎn)品測(cè)試階段涛浙,遇到了一個(gè)問(wèn)題:小程序中調(diào)用wx.getShareInfo之后,把加密數(shù)據(jù)傳到服務(wù)端進(jìn)行解密摄欲,發(fā)生了解密失敗的問(wèn)題轿亮。并且發(fā)現(xiàn)了一個(gè)現(xiàn)象,每次新用戶登錄后胸墙,大概5分鐘之內(nèi)是正常的我注,之后就開始出現(xiàn)解密失敗。分析了原因迟隅,解密失敗只可能是sessionKey過(guò)期了但骨,但是為什么會(huì)過(guò)期始終找不到原因。這個(gè)時(shí)候玻淑,我們犯了一個(gè)致命的錯(cuò)誤嗽冒,開始質(zhì)疑是微信的bug呀伙,猜測(cè)可能開發(fā)版和體驗(yàn)版小程序有sessionKey過(guò)期的bug补履。并沒(méi)有想到有可能是第三方SDK的問(wèn)題。最終結(jié)果就是剿另,產(chǎn)品上線之后依然存在這個(gè)問(wèn)題箫锤。
這個(gè)時(shí)候才開始重新審視整個(gè)項(xiàng)目贬蛙,才發(fā)現(xiàn)阿拉丁的SDK里也有wx.login的代碼,這一步很可能導(dǎo)致登錄態(tài)刷新谚攒,致使我們的sessionKey失效阳准。果然,移除SDK后馏臭,一切運(yùn)行正常了野蝇。
總結(jié)
微信小程序中使用第三方的代碼,一定要謹(jǐn)慎括儒,使用之前嚴(yán)格檢查一下代碼中是否有調(diào)用微信的API绕沈,可以全局搜索“wx.”,類似登錄或者需要用戶授權(quán)的API帮寻,很容易影響我們?cè)械墓δ芎腕w驗(yàn)乍狐,一旦發(fā)現(xiàn)就需要逐個(gè)考察,查清楚會(huì)有哪些影響固逗,最終權(quán)衡一下是否要使用第三方SDK