官方文檔地址:https://mp.weixin.qq.com/debug/wxadoc/dev/api/api-login.html?t=20161122
一. 官方登錄時(shí)序圖
官方的登錄時(shí)序圖
二. 簡(jiǎn)單理解
這里僅按照官方推薦的規(guī)范來(lái)
0. 前置條件
一共有三端:
- 微信小程序客戶端
- 第三方服務(wù)器端(自己搭建)
- 微信服務(wù)器端
1. 客戶端獲得code递沪,并將code傳給第三方服務(wù)端
微信小程序端調(diào)用wx.login倦畅,獲取登錄憑證(code)税肪,并調(diào)用接口脓匿,將code發(fā)送到第三方客戶端
2. 第三方服務(wù)端用code換session_key和openid
小程序端將code傳給第三方服務(wù)器端膏燕,第三方服務(wù)器端調(diào)用接口果录,用code換取session_key和openid
3. 第三方服務(wù)端生成新的session(3rd_session)
第三方服務(wù)器端拿到請(qǐng)求回來(lái)的session_key和openid,先留著丸卷,不能給客戶端;然后用操作系統(tǒng)提供的真正隨機(jī)數(shù)算法生成一個(gè)新的session询刹,叫3rd_session
4. 第三方服務(wù)端建立對(duì)應(yīng)關(guān)系谜嫉,并存儲(chǔ)
將3rd_session作為key抽莱,微信服務(wù)端返回的session_key和openid作為值,保存起來(lái)
5. 第三方服務(wù)端將3rd_session發(fā)送到客戶端
客戶端只拿到3rd_session就夠了骄恶,大人說(shuō)話小孩別插嘴食铐,小程序不需要知道session_key和openid
6. 正常請(qǐng)求
小程序每次請(qǐng)求都將3rd_session放在請(qǐng)求頭里,第三方服務(wù)端解析判斷合法性僧鲁,并進(jìn)行正常的邏輯處理虐呻。