其實,這裡說的不是小程式的授權機制,而是登入態的機制。 小程式裡面的授權,是特定介面的授權。微信官方已經為小程式封裝了許多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就是使用者唯一的識別碼。
相關推薦:
以上是微信小程式授權機制詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!