一. 官方登錄時序圖
官方的登錄時序圖
二. 簡單理解
這里僅按照官方推薦的規范來
0. 前置條件
一共有三端:
- 微信小程序客戶端
- 第三方服務器端
- 微信服務器端
1. 客戶端獲得code,並將code傳給第三方服務端
微信小程序端調用wx.login,獲取登錄憑證(code),並調用接口,將code發送到第三方客戶端
2. 第三方服務端用code換session_key和openid
小程序端將code傳給第三方服務器端,第三方服務器端調用接口,用code換取session_key和openid
3. 第三方服務端生成新的session(3rd_session)
第三方服務器端拿到請求回來的session_key和openid,先留着,不能給客戶端;然后用操作系統提供的真正隨機數算法生成一個新的session,叫3rd_session
4. 第三方服務端建立對應關系,並存儲
將3rd_session作為key,微信服務端返回的session_key和openid作為值,保存起來
5. 第三方服務端將3rd_session發送到客戶端
客戶端只拿到3rd_session就夠了,大人說話小孩別插嘴,小程序不需要知道session_key和openid
6. 正常請求
小程序每次請求都將3rd_session放在請求頭里,第三方服務端解析判斷合法性,並進行正常的邏輯處理。