一焊刹、基本思路
? ? 1. 用戶第一次進(jìn)入小程序點(diǎn)擊微信小程序授權(quán)击罪,點(diǎn)擊確認(rèn)后->前端傳三個(gè)值:code芋簿,iv痒给,encryptedData.
? ? 2. code用于獲取session_key
? ? 3.通過session_key说墨,iv,encryptedData獲取用戶信息苍柏,此時(shí)已經(jīng)拿到用戶openid.
? ? 4.通過用戶信息尼斧,創(chuàng)建用戶token。token作為標(biāo)明用戶信息试吁,下次再來小程序可以不需要授權(quán)登錄棺棵。
二、思路的細(xì)節(jié)
? ? 1.對(duì)于第一步熄捍,用戶點(diǎn)擊確認(rèn)授權(quán)后烛恤。這時(shí)調(diào)用后臺(tái)接口。這是一個(gè)跨域請(qǐng)求余耽,所以接口路由需要加入跨域中間件缚柏。
????從前端獲取三個(gè)值后,進(jìn)入第二步
????2. 由code獲取session_key碟贾。
首先用到了composer安裝的插件币喧,這里面的路由訪問涉及到了容器注入,(目前還不是很懂袱耽。杀餐。。)
????找到sns類后看到下面的代碼
????可以看到這里調(diào)用了微信的接口朱巨。方法的參數(shù)是我們從前端獲取的code.可以看到要返回session_key還需要appid和appsecret史翘。
3.通過session_key,iv蔬崩,encryptedData獲取用戶信息恶座,此時(shí)已經(jīng)拿到用戶openid.
這個(gè)函數(shù)目前也是看不懂。沥阳。點(diǎn)進(jìn)去后面也用到了容器注入和composer安裝的插件(留個(gè)坑跨琳,后面來填),目前只知道通過這個(gè)函數(shù)$userInfo中便有了openid
4.有了openid后桐罕,我們小程序便可以辨明用戶身份的唯一性啦脉让。把用戶的信息和openid等存入數(shù)據(jù)庫中桂敛。接下來用這個(gè)openid來創(chuàng)建用戶登錄的令牌token
$user中已經(jīng)有了openid,$type為用戶登錄類型。有了令牌token后溅潜,用戶下次再進(jìn)入我們的小程序就不需要再次授權(quán)登錄了术唬。