關於小程式授權機制
阿新 • • 發佈:2019-01-01
其實,這裡說的不是小程式的授權機制,而是登入態的機制。
小程式裡面的授權,是對特定介面的授權。
微信官方已經給小程式封裝了很多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就是使用者的唯一識別符號。