# uni实人认证

uni实人认证是DCloud与合作伙伴共同推出的金融级实人认证服务,通过对比人脸、活体检测、姓名和身份证号码,来确认用户身份的有效性。

实人认证涉及业务开通和付费,涉及客户端和服务器交互,有较多文档:

  1. 业务介绍:介绍业务流程、开通和付费。详见
  2. 客户端API,即本文
  3. 服务器API,详见

uni-id-pages,已经内置实人认证,从云端到客户端均已开发好并开源,推荐使用。详情

# uni.getFacialRecognitionMetaInfo()

获取阿里云实人认证meta info

# 返回值

类型
string

# getFacialRecognitionMetaInfo 兼容性

Android iOS web
3.9 4.11 -

# 参见

相关 Bug

# uni.startFacialRecognitionVerify(faceStyle)

启动人脸识别

# 参数

名称 类型 必填 默认值 描述
faceStyle StartFacialRecognitionVerifyOptions - -
名称 类型 必备 默认值 描述
certifyId string - certifyId 调用实人认证的id
progressBarColor string | null - 活体检测页面的进度条颜色。
screenOrientation "land" | "port" "port" 认证时屏幕方向
- land 横屏
- port 竖屏
success (res: StartFacialRecognitionVerifySuccess) => void | null - 成功回调
fail (res: IFacialRecognitionVerifyError) => void | null - 失败回调
complete (res: any) => void | null - 完成回调
# StartFacialRecognitionVerifySuccess 的属性值
名称 类型 必备 默认值 描述
errCode number - 错误码
errSubject string - 调用API的名称
errMsg string - 错误的详细信息
cause SourceError - 错误来源
名称 类型 必备 默认值 描述
subject string | null - 源错误模块名称
message string - 源错误描述信息
code number - 源错误的错误码
name string - -
cause Error | null -
# IFacialRecognitionVerifyError 的属性值
名称 类型 必备 默认值 描述
errCode 10010 | 10012 | 10011 | 10013 | 10020 | 10001 | 10002 - 错误码
- 10001 certifyId 不能为空
- 10002 "当前设备不支持"
- 10010 刷脸异常
- 10012 网络异常
- 10011 验证中断
- 10013 刷脸验证失败
- 10020 设备设置时间异常
errSubject string - 统一错误主题(模块)名称
data any | null - 错误信息中包含的数据
cause Error | null - 源错误信息,可以包含多个错误,详见SourceError
errMsg string - -
# StartFacialRecognitionVerifyOptions 兼容性
Android iOS web
screenOrientation 3.9 4.11 -

# startFacialRecognitionVerify 兼容性

Android iOS web
3.9 4.11 -

# 参见

相关 Bug

# 示例

hello uni-app x

<template>
 <!-- #ifdef APP -->
 <scroll-view class="page-scroll-view">
 <!-- #endif -->
   <view>
     <page-head :title="title"></page-head>
     <view class="uni-padding-wrap uni-common-mt">
       <view class="uni-btn-v uni-common-mt">
         <input class="uni-input" type="text" v-model="realName" name="real-name"
           placeholder="姓名" maxlength="-1"/>
       </view>
       <view class="uni-btn-v uni-common-mt">
         <input class="uni-input" type="text" v-model="idCard" name="id-card"
           placeholder="身份证号" maxlength="-1"/>
       </view>
       <view class="uni-btn-v uni-common-mt">
         <button type="primary" @click="facialRecognition">开始人脸识别</button>
       </view>
     </view>
   </view>
 <!-- #ifdef APP -->
 </scroll-view>
 <!-- #endif -->
</template>

<script>
 export default {
   data() {
     return {
       title: '实人认证',
       realName: '',
       idCard: ''
     }
   },
   onReady() {
   },
   methods: {
     facialRecognition() {
       const realName = this.realName.trim()
       const idCard = this.idCard.trim()
       if (realName == '' || idCard == '') {
         uni.showModal({
           title: '错误',
           content: '姓名和身份证号不可为空',
           showCancel: false
         })
         return
       }
       const testFacialCo = uniCloud.importObject('facial-recognition-co')
       let metaInfo = uni.getFacialRecognitionMetaInfo();
       testFacialCo.getCertifyId({
         realName,
         idCard,
         metaInfo
       })
         .then((res : UTSJSONObject) : Promise<string> => {
           const certifyId = res['certifyId'] as string
           return new Promise((
             resolve : (res : string) => void,
             reject : (err : Error) => void
           ) => {
             uni.startFacialRecognitionVerify({
               certifyId,
               success() {
                 resolve(certifyId)
               },
               fail(err) {
                 reject(new Error(err.errMsg))
               }
             })
           })
         })
         .then((certifyId : string) : Promise<UTSJSONObject> => {
           return testFacialCo.getAuthResult(certifyId)
         })
         .then((res : UTSJSONObject) => {
           console.log('res', res)
         })
         .catch((err : any | null) => {
           console.error('error', err)
         })
     }
   }
 }
</script>

<style>
</style>

# 通用类型

# GeneralCallbackResult

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

# Tips

  • 获取手机端app是否拥有摄像头权限,请使用API uni.getAppAuthorizeSetting
  • 从HBuilderX 3.99起,标准基座真机运行可直接体验实人认证,涉及费用扣除开发者的费用。无需自定义基座。
  • Android 实人认证支持的CPU类型为armeabi-v7aarm64-v8a,其他CPU类型设备调用uni.getFacialRecognitionMetaInfo()会返回空字符串,调用uni.startFacialRecognitionVerify()会触发错误码为10002的错误回调。