A小程序没有开通人脸识别功能,B小程序开通了人脸识别。
总体思路是:从A小程序需要进行人脸识别的地方携带参数跳转到B小程序进行人脸识别,识别后把参数传递回来。
A小程序的参考代码如下:
//人脸识别相关 start 
powerDrawerFace(e){var that = thisthat.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小程序的代码参考如下:
    //人脸识别相关 startonLoad: 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