const onOff = 0; // 0 指纹登录,1 人脸识别登录
let params = {
challenge: JSON.stringify(uc) //挑战因子
};
let temp = {}; // 缓存数据
switch (onOff) {
case 0:
temp = {
name: '指纹登录'
};
params.requestAuthModes = ['fingerPrint'];
params.authContent = temp.name;
params.success = res => {
logger.info('>>>>>>>>>>>>>>>>' + temp.name + ' success: ', res);
this.logFingerPrint += '>>>>>>>>>>>>>>>>' + temp.name + ' success: ' + JSON.stringify(res);
this.$apply();
};
params.fail = err => {
logger.info('>>>>>>>>>>>>>>>>' + temp.name + ' fail: ', err); //安卓调试结果
this.logFingerPrint += '>>>>>>>>>>>>>>>>' + temp.name + ' fail: ' + JSON.stringify(err);
this.$apply();
};
break;
case 1:
temp = {
name: '人脸登录'
};
params.requestAuthModes = ['facial'];
params.authContent = temp.name;
params.success = res => {
logger.info('>>>>>>>>>>>>>>>>' + temp.name + ' success: ', res);
this.logFacial += '>>>>>>>>>>>>>>>>' + temp.name + ' success: ' + JSON.stringify(res);
this.$apply();
};
params.fail = err => {
logger.info('>>>>>>>>>>>>>>>>' + temp.name + ' fail: ', err); // 安卓调试结果
this.logFacial += '>>>>>>>>>>>>>>>>' + temp.name + ' fail: ' + JSON.stringify(err);
this.$apply();
};
break;
default:
break;
}
wx.startSoterAuthentication(params);
直接调用startSoterAuthentication的指纹识别,识别成功了,但触发fail回调,结果为:{authMode:"",errCode: -1,errMsg: "startSoterAuthentication:fail cancel",resultJSON:"",resultJSONSignature:""}
测试过的真机机型有:小米8、华为p20、华为荣耀20、魅族20X,都是有这个问题的。
找到原因了,官方代码的挑战因子双引号android代码转义有问题,只支持简单的数字。
你好,麻烦提供出现问题的具体机型、微信版本号、系统版本号,以及能复现问题的代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)