上一篇的的的鏈接 賴了一個星期了,let us 接著上一篇的搞。
在上一篇里搞了一下基礎設施建設,這一篇我們...稍微搞那么一丟丟上層建筑。
小程序登陸其實是個比較簡單的基本操作,但凡是看過微信開發文檔的應該都能懂,不過本菜雞還是想嘗試性的分享一下。
首先先明確一下 為啥要用微信登陸 ,在本菜雞看來在這個項目里使用微信登陸主要有三個目的
然后,明確一下微信登陸過程中的幾個概念
然后,結合本次項目的實際情況捋一下微信登陸的流程
$url='https://api.weixin.qq.com/sns/jscode2session?appid='.$this->appId.'&secret='.$this->appSecret.'&js_code='.$code.'&grant_type=authorization_code'; 復制代碼
$wxResult=json_decode(curl_get($url),true); if(!$wxResult||!array_key_exists('openid',$wxResult)){ return ResultService::failure('獲取openid不成功'); } $openId=$wxResult['openid']; 復制代碼
其實獲得到openid微信登陸已經差不多了,剩下就是怎么用的問題了,下面的步驟是在本次項目的流程,供各位老哥參考
至此,本項目中微信登陸的流程搞完了。登陸完的結果就是,后臺新增或更新了用戶數據,小程序端有了token。
本菜雞個人覺得常用的保持登陸狀態的方法有兩種
先說第一種,也是本項目采用的方法,其實在上面的步驟5、6已經把這個方法將清楚了,
第二種也在做網站用戶登陸的時候是非常常見的操作,在擼網站的時候,用戶登陸后把用戶信息存到session里,用戶在請求的時候能夠從session中取到用戶信息,之所以這樣是因為,瀏覽器請求服務器,服務器響應時,會帶一個sessionid回去給瀏覽器,瀏覽器下次請求時候會自動帶著sessionid,服務器會根據sessionid來到相應的會話里,所以能取到session中的用戶
BUT在小程序中有所不同,這是因為小程序網絡訪問是用的微信封裝的wx.request,而該方法并不會把sessionid存下來,因此,為了能和網站登陸搞成一個邏輯,我們手動存一下sessionid,在下次請求的時候帶著sessionid去即可。
部分代碼如下
服務端(PHP)
//前面先搞登陸,登陸完了把用戶存到session里然后 return ResultService::success('',['sessionId'=>session_id()]); 復制代碼 小程序端 //登陸 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' }); } //請求例子(不同后端header名不一樣,比如php的后端就是 PHPSESSID=你的sessionId) function userJoinPromise(data,sessionId){ let url = 'travel/api/userJoin'; return getServerDataPromise(url, data, { 'Cookie': 'PHPSESSID=' + sessionId }); } |
復制代碼
下班了下班了,先寫到這明天繼續擼