一、获取用户授权
在小程序中,用户需要授权登录我们的小程序才能使用,我们需要通过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/n/228820.html
微信扫一扫
支付宝扫一扫