# wx.requestFacialRecognition(Object object)

基础库 3.11.2 开始支持,低版本需做兼容处理

Promise 风格 调用:不支持

微信 Windows 版:支持

微信 Mac 版:支持

# 功能描述

腾讯游戏人脸识别验证功能是基于健康系统防沉迷体系,用于识别疑似未成年人冒用成年人账号游玩游戏的行为,是防止未成年人沉迷网络游戏的一项重要措施。本接口是为开通虚拟支付功能的小游戏开发者提供的,此接口是基于人脸识别的未成年人身份核验接口。本次识别是根据用户在腾讯健康系统中留存的实名信息进行验证,结果将直接返回至开发者。

# 参数

# Object object

属性 类型 默认值 必填 说明
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数
complete function 接口调用结束的回调函数(调用成功、失败都会执行)

# 错误

错误码 错误信息 说明
0 人脸识别成功
2002004 人脸识别失败
2002006 用户取消/超时/不同意,导致未完成人脸识别
2002007 本用户7天内人脸识别已通过,通过日期为XX
2002008 本日已调起过人脸识别或者本月调用次数已达上限
2002009 无权限发起人脸识别

# 接口限额

  • 超出限额后将返回错误码 2002008(频率控制)
  • 1天内全部游戏对一个用户只能调起1次人脸识别
  • 若用户人脸识别通过:7天内不能再被弹出人脸识别
  • 根据小游戏评级每个月限制使用次数,一旦发现恶意滥用接口,会取消使用资格。具体使用次数如下:
    • S级:300次/月
    • A级:100次/月
    • B级:30次/月

# 处理流程

人脸识别流程图

# 示例代码

// 实际业务场景:防沉迷身份验证
function checkUserIdentity() {
  wx.requestFacialRecognition({
    success(res) {
      // 场景 1:本次人脸识别通过
      // res = { errCode: 0, errMsg: 'ok' }
      console.log('人脸识别成功:', res)
      // 允许继续游戏
      startGame()
    },
    fail(err) {
      console.error('人脸识别失败:', err)

      let tipMessage = ''
      let shouldBlock = false  // 是否需要阻断游戏

      // 根据错误码进行不同处理
      switch (err.errCode) {
        case 2002004:
          // 人脸识别失败(需要阻断)
          // err = { errCode: 2002004, errMsg: '人脸识别失败' }
          tipMessage = '识别失败,请稍后重试'
          shouldBlock = true
          break

        case 2002006:
          // 用户取消/超时/不同意,导致未完成人脸识别(需要阻断)
          // err = { errCode: 2002006, errMsg: '用户取消' }
          tipMessage = '您已取消验证,无法继续游戏'
          shouldBlock = true
          break

        case 2002007:
          // 本用户7天内人脸识别已通过(可以继续游戏)
          // err = { errCode: 2002007, errMsg: '本用户7天内人脸识别已通过,通过日期为2024-01-15' }
          tipMessage = '您已完成验证'
          shouldBlock = false
          break

        case 2002008:
          // 频率控制:本日已调起过人脸识别 or 本月调用次数已达上限(可以继续游戏)
          // err = { errCode: 2002008, errMsg: '本日已调起过人脸识别' }
          // 或 err = { errCode: 2002008, errMsg: '本月调用次数已达上限' }
          tipMessage = '今日验证次数已达上限'
          shouldBlock = false
          break

        case 2002009:
          // 无权限发起人脸识别(可以继续游戏)
          // err = { errCode: 2002009, errMsg: '无权限发起人脸识别' }
          tipMessage = '暂无权限使用此功能'
          shouldBlock = false
          break

        default:
          // 系统异常等其他错误(可以继续游戏,避免影响正常用户)
          tipMessage = '系统异常,请稍后重试'
          shouldBlock = false
      }

      if (tipMessage) {
        wx.showModal({
          title: '提示',
          content: tipMessage,
          showCancel: false
        })
      }

      if (shouldBlock) {
        // 仅对识别失败(2002004)和用户取消(2002006)阻断游戏
        restrictGameFeatures()
      } else {
        // 其他情况允许继续游戏
        startGame()
      }
    },
    complete(res) {
      // 无论成功失败均会触发
      console.log('人脸识别流程结束:', res)
    }
  })
}
点击咨询小助手