# uni.startSoterAuthentication(options)

开始 SOTER 生物认证

# startSoterAuthentication 兼容性

Web 微信小程序 Android iOS HarmonyOS
x 4.41 x x 4.61

# 参数

名称 类型 必填 默认值 兼容性 描述
options StartSoterAuthenticationOptions - - -
名称 类型 必备 默认值 兼容性 描述
requestAuthModes Array<'fingerPrint' | 'facial' | 'speech'> -
请求使用的可接受的生物认证方式
challenge string -
挑战因子
authContent string -
验证描述,即识别过程中显示在界面上的对话框提示内容
success (result: StartSoterAuthenticationSuccess) => void -
接口调用成功的回调函数
fail (result: UniError) => void -
接口调用失败的回调函数
complete (result: any) => void -
接口调用结束的回调函数(调用成功、失败都会执行)

# StartSoterAuthenticationSuccess 的属性值

名称 类型 必备 默认值 兼容性 描述
errCode number -
错误码
authMode string -
生物认证方式
合法值 兼容性 描述
fingerPrint - 指纹识别
facial - 人脸识别
speech - 声纹识别(暂未支持)
resultJSON string -
在设备安全区域(TEE)内获得的本机安全信息以及本次认证信息
resultJSONSignature string -
用SOTER安全密钥对 resultJSON 的签名(SHA256 with RSA/PSS, saltlen=20)
errMsg string -
接口调用结果

# 参见

# uni.checkIsSupportSoterAuthentication(options)

获取本机支持的 SOTER 生物认证方式

# checkIsSupportSoterAuthentication 兼容性

Web 微信小程序 Android iOS HarmonyOS
x 4.41 x x 4.61

# 参数

名称 类型 必填 默认值 兼容性 描述
options CheckIsSupportSoterAuthenticationOptions - - -
名称 类型 必备 默认值 兼容性 描述
success (result: CheckIsSupportSoterAuthenticationSuccess) => void -
接口调用成功的回调函数
fail (result: UniError) => void -
接口调用失败的回调函数
complete (result: any) => void -
接口调用结束的回调函数(调用成功、失败都会执行)

# CheckIsSupportSoterAuthenticationSuccess 的属性值

名称 类型 必备 默认值 兼容性 描述
supportMode Array<'fingerPrint' | 'facial' | 'speech'> -
接口调用成功的回调函数
errMsg string -
接口调用结果

# 参见

# uni.checkIsSoterEnrolledInDevice(options)

获取设备内是否录入如指纹等生物信息

# checkIsSoterEnrolledInDevice 兼容性

Web 微信小程序 Android iOS HarmonyOS
x 4.41 x x 4.61

# 参数

名称 类型 必填 默认值 兼容性 描述
options CheckIsSoterEnrolledInDeviceOptions - - -
名称 类型 必备 默认值 兼容性 描述
checkAuthMode string -
生物认证方式
合法值 兼容性 描述
fingerPrint - 指纹识别
facial - 人脸识别
speech - 声纹识别(暂未支持)
success (result: CheckIsSoterEnrolledInDeviceSuccess) => void -
接口调用成功的回调函数
fail (result: UniError) => void -
接口调用失败的回调函数
complete (result: any) => void -
接口调用结束的回调函数(调用成功、失败都会执行)

# CheckIsSoterEnrolledInDeviceSuccess 的属性值

名称 类型 必备 默认值 兼容性 描述
isEnrolled boolean -
是否已录入信息
errMsg string -
错误信息

# 参见

# 示例

hello uni-app x

该 API 不支持 Web,请运行 hello uni-app x 到 App 平台体验

<template>
  <view class="uni-container">
    <page-head :title="title"></page-head>
    <view class="uni-common-mt">
      <text class="uni-title-text">设备支持情况:</text>
      <text class="uni-subtitle-text">{{ supportStatus }}</text>
    </view>
    <view class="uni-common-mt">
      <text class="uni-title-text">认证结果:</text>
      <text class="uni-subtitle-text">{{ authResult }}</text>
    </view>
    <button @click="checkSupport" class="uni-common-mt">检查支持的认证方式</button>
    <button @click="checkAuth('fingerPrint')" class="uni-common-mt">检查指纹</button>
    <button @click="checkAuth('facial')" class="uni-common-mt">检查FaceID</button>
    <button @click="startAuth('fingerPrint')"  type="primary" class="uni-common-mt">指纹认证</button>
    <button @click="startAuth('facial')"  type="primary" class="uni-common-mt">FaceID认证</button>
  </view>
</template>

<script setup lang="uts">
const title = '生物认证'
const supportStatus = ref('未检查')
const authResult = ref('等待认证')

const checkSupport = () => {
  uni.checkIsSupportSoterAuthentication({
    success: (res) => {
      supportStatus.value = res.supportMode.length > 0 ?
        `支持: ${res.supportMode.join(', ')}` :
        '不支持任何生物认证'
    },
    fail: () => {
      supportStatus.value = '检查失败'
    }
  })
}

const checkAuth = (mode: string) => {
  uni.checkIsSoterEnrolledInDevice({
    checkAuthMode: mode,
    success: (res) => {
      console.log('res: ',res);
      authResult.value = `${mode === 'fingerPrint' ? '指纹' : 'FaceID'}${res.isEnrolled ? '已录入' : '未录入'}`
    },
    fail: (err) => {
      console.log('err: ',err);
      authResult.value = `${mode === 'fingerPrint' ? '指纹' : 'FaceID'}检查失败,${err}`
    }
  })
}

const startAuth = (mode: string) => {
  uni.startSoterAuthentication({
    requestAuthModes: [mode],
    challenge: '123456',
    authContent: `请用${mode === 'fingerPrint' ? '指纹' : 'FaceID'}解锁`,
    success: (res) => {
      console.log('res: ',res);
      authResult.value = `${res.authMode === 'fingerPrint' ? '指纹' : 'FaceID'}认证成功`
    },
    fail: (err) => {
      console.log('err: ',err);
      authResult.value = `${mode === 'fingerPrint' ? '指纹' : 'FaceID'}认证失败,${err}`
    }
  })
}
</script>

# 通用类型

# GeneralCallbackResult

名称 类型 必备 默认值 兼容性 描述
errMsg string -
错误信息