小程序登陸狀態(tài)維護(hù) | SessionKey的正確使用姿勢 |小程序開發(fā)教程

小程序用戶身份的標(biāo)識可以使用openid,如果是多平臺的可以使用unionid,這兩個字段對于一個小程序和用戶而言是固定不變的,基本上是獲取一次與業(yè)務(wù)系統(tǒng)的用戶ID建立對應(yīng)關(guān)系,然后就完事大吉了。

在實(shí)際使用中用到SessionKey的場景不多。比如用戶信息openid和unionid獲取、用戶手機(jī)號的獲取。前者是wx.login()中通過code就能獲取到,用SessionKey來解密的場景基本上就很少了。但是要是獲取用戶手機(jī)號的時候就要使用有效的SessionKey。要注意了是“有效”,雖然在獲取SessionKey的時候有個過期時間,但是在很多場景下經(jīng)常會出現(xiàn)超時或已經(jīng)過期的情況。比如常見的一種情況是用戶信息解密、手機(jī)號解密有時可以正常解密,有時候就不行。這時候基本上的問題就是解密用的SessionKey和與加密用的SessionKey不是同一個了。

那怎么知道當(dāng)前的SessionKey有沒有過期,按時間來算是不行的。小程序提供wx.checkSesstion()這個函數(shù),在需要解密之前先判定一下有沒有過期,如果已經(jīng)過期那么就先wx.login(),這時再請求加密數(shù)據(jù)(用戶信息或手機(jī)號信息),然后做解密操作的時候就可以正常的使用了。

說一下SessionKey管理思路。

調(diào)用wx.login()獲取code,服務(wù)端根據(jù)這個code和appid和appsecret獲取SessionKey。把SessionKey保存到服務(wù)器上,一般是不在網(wǎng)絡(luò)傳輸,建立自己的SesstionID和生成的SessionKey的對應(yīng)關(guān)系。然后把生成的SessionID傳輸?shù)叫〕绦蚩蛻舳?,在小程序本地緩存。在需要使用SessionKey的場景時先使用wx.checkSession()判定一下有沒有過期,如果沒有過期就把本地的SessionID傳輸?shù)椒?wù)端,服務(wù)端根據(jù)SessionID查詢對應(yīng)的SessionKey,進(jìn)行后繼的業(yè)務(wù)操作。如果本地判定已經(jīng)過期,那就先wx.login()重新生一次。

小程序官方給出了一個非常好的時序圖,感興趣的同學(xué)可以查看文檔了解一下具體的過程。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容