在做小程序的指纹识别和人脸识别时,都需要先验证一下手机是否支持。
wx.checkIsSupportSoterAuthentication === 获取本机支持的 SOTER 生物认证方式
***理解:验证手机是否支持指纹识别和人脸识别
***原因:部分ios和安卓机是不支持指纹识别和人脸识别
wx.checkIsSoterEnrolledInDevice === 获取设备是否录入如指纹等生物信息的接口
wx.startSoterAuthentication === 开始 SOTER 生物认证
验证手机是否支持
data: {
fingerprint : false, //是否支持指纹识别 默认false
ISfingerprint: false, //是否已录入指纹信息 默认false
Face: false, //是否支持人脸识别 默认false
},
// 在需要的页面onLoad下验证手机是否支持
// 当然也可以在加载小程序的时候,在App.js中进行验证
onLoad: function (options) {
var that = this
// 获取本机支持的 SOTER 生物认证方式
wx.checkIsSupportSoterAuthentication({
success(res) {
// res.supportMode = [] 不具备任何被SOTER支持的生物识别方式
// res.supportMode = ['fingerPrint'] 只支持指纹识别
// res.supportMode = ['fingerPrint', 'facial'] 支持指纹识别和人脸识别
if (res.supportMode.length != 0){
for (var i in res.supportMode){
if (res.supportMode[i] == 'fingerPrint'){
console.log("支持指纹识别", res.supportMode[i]);
that.setData({
fingerprint: true //支持指纹识别
})
}
if (res.supportMode[i] == 'facial'){
console.log("支持人脸识别", res.supportMode[i]);
that.setData({
Face: true //支持人脸识别
})
}
}
}
} else {
wx.showToast({
title: '该手机不支持指纹和人脸识别',
})
}
})
},
由于不同手机支持的验证的方式不同,所以根据需求和产品进行沟通来实现自己的功能。
指纹验证
在上述中已经拿到本手机是否支持指纹验证后,再次判断手机是否已经录入指纹
//是否有指纹
isFingerPrint:function(){
var that = this;
wx.checkIsSoterEnrolledInDevice({
checkAuthMode: 'fingerPrint',
success(res) {
console.log(res.isEnrolled,'是否已录入信息 返回true和false')
console.log(res.errMsg,'错误信息')
that.setData({
ISfingerprint: res.isEnrolled //是否已录入指纹信息
})
},
// 如果手机没有指纹录入,可以使用complete看下回调返回的信息。
complete(res){
console.log(res,'回调信息')
}
})
},
// 进行指纹识别
fingerPrint: function(){
wx.startSoterAuthentication({
requestAuthModes: ['fingerPrint'],
challenge: '123456',
authContent: '请用指纹解锁',
success(res) {
console.log("识别成功",res)
},
fail(res){
console.log("识别失败",res)
}
})
},
注意:challenge:挑战因子。挑战因子为调用者为此次生物鉴权准备的用于签名的字符串关键识别信息,将作为 resultJSON
的一部分,供调用者识别本次请求。例如:如果场景为请求用户对某订单进行授权确认,则可以将订单号填入此参数。
个人理解:可以是当前用户id或者当前用户识别id
网友评论