一、獲取用戶授權
在小程序中,用戶需要授權登錄我們的小程序才能使用,我們需要通過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-hk/n/228820.html
微信掃一掃
支付寶掃一掃