1. 程式人生 > >關於小程式授權機制

關於小程式授權機制

這裡寫圖片描述

其實,這裡說的不是小程式的授權機制,而是登入態的機制。
小程式裡面的授權,是對特定介面的授權。

微信官方已經給小程式封裝了很多API介面。
當呼叫wx.login()時,就可以向伺服器發起請求,得到code。

在公眾號裡,是需要開發者在伺服器設定好連結的。

客戶端拿到code碼是需要傳送給伺服器的,微信不建議客戶端直接向微信傳送code。

在伺服器接收到code碼後,再攜帶這appid,secret去訪問微信伺服器,微信伺服器會返回openid,session_key。
其中:

openid是使用者標識。
session_key是解密用的。因為有的介面返回來的資料是加密的,比如當我們想獲取unionid時。

當開發者伺服器拿到微信返回的openid,session_key後,會自己生成一個3rd_session (最好和openid相關聯)也可以叫做一個token吧。然後把這個3rd_session返回給客戶端,並且在伺服器的session中存入以3rd_session為key,openid+session_key為value的資料。

客戶端接收到這個3rd_session後,也寫入在storage裡。
這樣使用者重新進入小程式後,呼叫wx.checksession()就可以檢測登入態。

另外把這個3rd_session寫入客戶端裡,也使得我們的介面更加合理。
因為有些介面是公共介面,有些介面是需要許可權控制的。而這個3rd_session就是使用者的唯一識別符號。