上一篇的的的鏈接 賴了一個(gè)星期了,let us 接著上一篇的搞。
在上一篇里搞了一下基礎(chǔ)設(shè)施建設(shè),這一篇我們...稍微搞那么一丟丟上層建筑。
小程序登陸其實(shí)是個(gè)比較簡(jiǎn)單的基本操作,但凡是看過(guò)微信開(kāi)發(fā)文檔的應(yīng)該都能懂,不過(guò)本菜雞還是想嘗試性的分享一下。
首先先明確一下 為啥要用微信登陸 ,在本菜雞看來(lái)在這個(gè)項(xiàng)目里使用微信登陸主要有三個(gè)目的
然后,明確一下微信登陸過(guò)程中的幾個(gè)概念
然后,結(jié)合本次項(xiàng)目的實(shí)際情況捋一下微信登陸的流程
$url='https://api.weixin.qq.com/sns/jscode2session?appid='.$this->appId.'&secret='.$this->appSecret.'&js_code='.$code.'&grant_type=authorization_code'; 復(fù)制代碼
$wxResult=json_decode(curl_get($url),true); if(!$wxResult||!array_key_exists('openid',$wxResult)){ return ResultService::failure('獲取openid不成功'); } $openId=$wxResult['openid']; 復(fù)制代碼
其實(shí)獲得到openid微信登陸已經(jīng)差不多了,剩下就是怎么用的問(wèn)題了,下面的步驟是在本次項(xiàng)目的流程,供各位老哥參考
至此,本項(xiàng)目中微信登陸的流程搞完了。登陸完的結(jié)果就是,后臺(tái)新增或更新了用戶數(shù)據(jù),小程序端有了token。
本菜雞個(gè)人覺(jué)得常用的保持登陸狀態(tài)的方法有兩種
先說(shuō)第一種,也是本項(xiàng)目采用的方法,其實(shí)在上面的步驟5、6已經(jīng)把這個(gè)方法將清楚了,
第二種也在做網(wǎng)站用戶登陸的時(shí)候是非常常見(jiàn)的操作,在擼網(wǎng)站的時(shí)候,用戶登陸后把用戶信息存到session里,用戶在請(qǐng)求的時(shí)候能夠從session中取到用戶信息,之所以這樣是因?yàn)椋瑸g覽器請(qǐng)求服務(wù)器,服務(wù)器響應(yīng)時(shí),會(huì)帶一個(gè)sessionid回去給瀏覽器,瀏覽器下次請(qǐng)求時(shí)候會(huì)自動(dòng)帶著sessionid,服務(wù)器會(huì)根據(jù)sessionid來(lái)到相應(yīng)的會(huì)話里,所以能取到session中的用戶
BUT在小程序中有所不同,這是因?yàn)樾〕绦蚓W(wǎng)絡(luò)訪問(wèn)是用的微信封裝的wx.request,而該方法并不會(huì)把sessionid存下來(lái),因此,為了能和網(wǎng)站登陸搞成一個(gè)邏輯,我們手動(dòng)存一下sessionid,在下次請(qǐng)求的時(shí)候帶著sessionid去即可。
部分代碼如下
服務(wù)端(PHP)
//前面先搞登陸,登陸完了把用戶存到session里然后 return ResultService::success('',['sessionId'=>session_id()]); 復(fù)制代碼 小程序端 //登陸 dataUtils.userLogin({ code: code, info: JSON.stringify(info) }).then(res => { if (res.statusCode == '200') { wx.setStorageSync('sessionId', res.data.data.sessionId); $Message({ content: '登陸成功', type: 'success' }); this.checkUserLogin(); } else { $Message({ content: '登陸未成功', type: 'error' }); } //請(qǐng)求例子(不同后端header名不一樣,比如php的后端就是 PHPSESSID=你的sessionId) function userJoinPromise(data,sessionId){ let url = 'travel/api/userJoin'; return getServerDataPromise(url, data, { 'Cookie': 'PHPSESSID=' + sessionId }); } |
復(fù)制代碼
下班了下班了,先寫到這明天繼續(xù)擼
工作日 8:30-12:00 14:30-18:00
周六及部分節(jié)假日提供值班服務(wù)