一、獲取用戶授權
在小程序中,用戶需要授權登錄我們的小程序才能使用,我們需要通過wx.login()方法獲取用戶的code,然後通過wx.getUserInfo()方法獲取用戶的基本信息。
wx.login({ success: res => { //獲取用戶code成功,請求後端接口獲取用戶openid wx.getUserInfo({ success: res => { //獲取用戶信息成功,向後端傳遞用戶基本信息及openid }, fail: res => { //獲取用戶信息失敗,提示用戶授權 } }) }, fail: res => { //獲取用戶code失敗,提示用戶稍後再試 } })
以上代碼中,wx.login()方法獲取用戶的code,wx.getUserInfo()方法獲取用戶的基本信息。獲取用戶信息時可能會出現授權失敗的情況,此時我們需要提示用戶授權,並進行後續處理。
二、後端獲取openid
前端獲取用戶的code之後,需要將code傳遞給後台,後台通過微信開放平台提供的接口獲取用戶的openid,並將openid返回給前端。以下是後端代碼的示例:
$url = "https://api.weixin.qq.com/sns/jscode2session?appid={$appid}&secret={$secret}&js_code={$code}&grant_type=authorization_code"; $response = file_get_contents($url); $response = json_decode($response); $openid = $response->openid; //將openid返回給前端
在以上代碼中,我們通過微信開放平台提供的接口獲取用戶的openid,並將openid返回給前端。
三、用戶信息加密
前端獲取用戶的基本信息之後,需要進行加密處理,將用戶信息傳遞給後台進行解密。以下是前端加密代碼的示例:
wx.getUserInfo({ success: res => { var encryptedData = res.encryptedData; var iv = res.iv; //將encryptedData和iv傳遞給後台進行解密 }, fail: res => { //獲取用戶信息失敗,提示用戶授權 } })
在以上代碼中,我們通過wx.getUserInfo()方法獲取用戶的基本信息,其中res.encryptedData表示加密後的用戶數據,res.iv表示與用戶數據一起加密的初始向量。將encryptedData和iv傳遞給後台進行解密。
四、後端解密用戶信息
前端將加密後的用戶信息傳遞給後台之後,後台需要進行解密處理。以下是後端解密代碼的示例:
$encryptedData = $_POST['encryptedData']; $iv = $_POST['iv']; $pc = new WXBizDataCrypt($appid, $sessionKey); $errCode = $pc->decryptData($encryptedData, $iv, $data); if ($errCode == 0) { //解密成功,將用戶信息存儲到數據庫中 } else { //解密失敗,提示用戶稍後再試 }
在以上代碼中,我們通過WXBizDataCrypt類進行解密操作,將解密後的數據存儲到數據庫中。
五、授權登錄相關提示
在小程序授權登錄流程中,可能會遇到用戶授權失敗、獲取用戶信息失敗等情況,我們需要進行相關提示。以下是相關提示的代碼示例:
wx.login({ success: res => { //獲取用戶code成功,請求後端接口獲取用戶openid wx.getUserInfo({ success: res => { //獲取用戶信息成功,向後端傳遞用戶基本信息及openid }, fail: res => { wx.showModal({ title: '提示', content: '您還未授權登錄,請前往授權', showCancel: false, success: res => { if (res.confirm) { //跳轉到授權頁面 } } }) } }) }, fail: res => { wx.showModal({ title: '提示', content: '獲取用戶登錄狀態失敗,請稍後再試', showCancel: false }) } })
在以上代碼中,我們通過wx.showModal()方法進行相關提示,並進行跳轉處理。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/228820.html