A小程序没有开通人脸识别功能,B小程序开通了人脸识别。
总体思路是:从A小程序需要进行人脸识别的地方携带参数跳转到B小程序进行人脸识别,识别后把参数传递回来。
A小程序的参考代码如下:
//人脸识别相关 start
powerDrawerFace(e){
var that = this
that.setData({
faceOfReservation: e.currentTarget.dataset.id
})
// console.log(that.data.faceOfReservation.personName+","+that.data.faceOfReservation.personIdCard)
that.navigateToTargetMiniProgram(that.data.faceOfReservation.personName,that.data.faceOfReservation.personIdCard);
},
//携带参数跳到B小程序
navigateToTargetMiniProgram(name,idCardNumber) {
wx.navigateToMiniProgram({
appId: 'B小程序的appId',
path: 'pages/index/index?name='+name+'&idCardNumber='+idCardNumber,
extraData: {
foo: 'bar'
},
envVersion: 'develop',//B小程序的开发版本 正式版本注释即可。
success(res) {
// 跳转成功的回调函数
},
fail(res) {
// 跳转失败的回调函数
}
});
},
//监听B小程序返回时携带的参数并进行逻辑判断。
onShow() {
var that=this;
wx.onAppShow(res=>{
console.log(res)
var extraData=res.referrerInfo.extraData;
if(extraData!=null){
var params={}
if(extraData.foo.errCode==0){
console.log(that.data.faceOfReservation.id)
params = {
id: that.data.faceOfReservation.id,
faceRecogFlag: 1,
}
}else{
params = {
id: that.data.faceOfReservation.id,
faceRecogFlag: -1,
}
}
console.log(params)
//进行A小程序后端代码的修改
reservableUpdate(params).then(res => {
if(res.data.success){
// wx.reLaunch({
// url: '/pages/myBooking/myBooking',
// })
this.getReservationOrderList()
}
})
}
})
},
//人脸识别相关 end
B小程序的代码参考如下:
//人脸识别相关 start
onLoad: function (options) {
// options 参数包含了跳转时携带的参数
this.facialRecognitionVerify(options.name,options.idCardNumber);
// if(options!=null){
// var name = options.name;
// var idCardNumber = options.idCardNumber;
// if(name!=null&&idCardNumber!=null){
// this.facialRecognitionVerify(name,idCardNumber);
// }
// this.setData({
// name: name,
// idCardNumber: idCardNumber
// })
// }
},
//启动人脸识别操作
facialRecognitionVerify(name,idCardNumber) {
// if(name==null||idCardNumber==null){
// if(this.data.name!=null&&this.data.idCardNumber!=null){
// name=this.data.name;
// idCardNumber=this.data.idCardNumber;
// }else{
// this.faceRecognitionComplete("姓名和身份证不能为空")
// return;
// }
// }
let that = this;
wx.startFacialRecognitionVerify({
name: name,
idCardNumber: idCardNumber,
checkAliveType: 2,
//人脸识别成功回调通知
success(res) {
that.faceRecognitionComplete(res)
//后端校验(最好是加)
// var verifyResult = res.verifyResult;
// wx.request({
// url: '/faceCheck/faceCheck.htm?action=faceIdentifyCheck',
// data: {'name':name,'idCardNumber':idCardNumber,
// 'verifyResult ':verifyResult
// },
// header: {
// 'content-type': 'application/json'
// },
// success (res) {
// console.log(res.data)
// }
// })
},
//人脸识别失败的回调通知
fail: function (res) {
wx.showModal({
title: '提示',
showCancel: false,
content: "人脸识别失败!" + res.errCode + "," + res.errMsg,
success: function (res) {
if (res.confirm) {
// wx.navigateBack();
that.faceRecognitionComplete(res)
}
}
});
},
});
},
//携带参数返回原先的小程序
faceRecognitionComplete(result) {
console.log(result)
wx.navigateBackMiniProgram({
extraData: {
foo: result //注意跳转回来,需要用foo字段。
},
success(res) {
// 返回成功
console.log(res)
}
})
}
//----end