微信小程序登錄流程圖
以下通過一個(gè)小程序官方登錄流程圖,來解釋小程序的開發(fā)過程。
一. 官方登錄時(shí)序圖
官方的登錄時(shí)序圖
二. 簡(jiǎn)單理解
這里僅按照官方推薦的規(guī)范來
前置條件
一共有三端:
微信小程序客戶端
第三方服務(wù)器端
微信服務(wù)器端
客戶端獲得code,并將code傳給第三方服務(wù)端
微信小程序端調(diào)用wx.login,獲取登錄憑證(code),并調(diào)用接口,將code發(fā)送到第三方客戶端
第三方服務(wù)端用code換session_key和openid
小程序端將code傳給第三方服務(wù)器端,第三方服務(wù)器端調(diào)用接口,用code換取session_key和openid
第三方服務(wù)端生成新的session(3rd_session)
第三方服務(wù)器端拿到請(qǐng)求回來的session_key和openid,先留著,不能給客戶端;然后用操作系統(tǒng)提供的真正隨機(jī)數(shù)算法生成一個(gè)新的session,叫3rd_session
第三方服務(wù)端建立對(duì)應(yīng)關(guān)系,并存儲(chǔ)
將3rd_session作為key,微信服務(wù)端返回的session_key和openid作為值,保存起來
第三方服務(wù)端將3rd_session發(fā)送到客戶端
客戶端只拿到3rd_session就夠了,大人說話小孩別插嘴,小程序不需要知道session_key和openid
正常請(qǐng)求
小程序每次請(qǐng)求都將3rd_session放在請(qǐng)求頭里,第三方服務(wù)端解析判斷合法性,并進(jìn)行正常的邏輯處理。
用心寫代碼,不辜負(fù)程序員之名。
微信小程序特性:
1:小程序使用框架提供的wx.request接口發(fā)送https請(qǐng)求不會(huì)攜帶cookie信息,傳統(tǒng)webserver的會(huì)話管理能力(session)在微信小程序無法直接使用,在這點(diǎn)上微信小程序更像CS架構(gòu)的開發(fā)模式,開發(fā)者需要自己實(shí)現(xiàn)會(huì)話管理功能。如微信本地保存userID,下次進(jìn)入,判斷本地是否有userID,有則直接調(diào)接口請(qǐng)求數(shù)據(jù),無則重新獲取微信code,后臺(tái)授權(quán),重新登錄。登錄后再保存userID。
2:小程序源碼打包后的大小限制為1M,單次通過網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)最大也是1M。
3:小程序由于沒有包含WebView控件,開發(fā)者無法在小程序內(nèi)部打開一個(gè)網(wǎng)頁(yè)。
4:推送,當(dāng)用戶在小程序內(nèi)部提交過表單或者完成過支付后,可允許開發(fā)者向用戶在7天內(nèi)推送1條預(yù)設(shè)模板的信息。
5: 建議:開發(fā)微信小程序時(shí)設(shè)計(jì)師可以用 iPhone6 作為視覺稿的標(biāo)準(zhǔn)。
所以工程師拿到750的設(shè)計(jì)稿,在PS中量取的容器大小,可以直接定義為rpx,不需要進(jìn)行2倍尺寸的換算。