
人脸核身调用失败往往卡在某个具体环节。本文按"客户端 → 网络与签名 → 服务端 → 设备环境"四层拆解,每层给出可对照的错误码与处理动作,帮你快速定位问题究竟出在哪一步。
排查的第一步不是改代码,而是判断问题发生在哪一层。按下面的顺序收集信息,可以快速缩小范围:
把这四类信息收集齐,问题范围基本就清楚了一半。下面逐层给出常见现象、定位方法与处理动作。
这一层的失败几乎都发生在"核身还没真正开始"之前,典型现象是 SDK 初始化失败、页面黑屏或编译报错。
现象 | 对应错误码 | 可能原因 | 处理动作 |
|---|---|---|---|
SDK 初始化失败 | Android | 不存在 License 文件或 License 过期 | 确认 |
直接调启动检测报错 | Android | 未调用 | 严格遵循"先 |
权限不足报错 | Android | 相机/存储等运行时权限未授予 | 在 AndroidManifest 声明权限,并在运行时动态申请 |
运行时报类找不到 | — | ProGuard/R8 混淆把 SDK 类裁剪了 | 在 keep 规则中保留 SDK 相关包,例如 |
iOS 编译不通过 | — | 接入的 | 检查文件后缀,确保参与编译的文件后缀正确 |
摄像头打开异常 | Android | 摄像头被其他应用占用或获取失败 | 关闭占用摄像头的应用,释放后再发起核身 |
提示:iOS 若提示
Class not found,通常是 SDK 未正确链接或 framework 未设为 Embed & Sign,需在 Xcode 的 Build Phases 中确认。
签名验签失败是这一层最高频的问题,本质是客户端生成的 sign 与服务端用相同密钥和算法重算的结果不一致,与人脸识别算法本身无关。腾讯云采用标准 HMAC-SHA256(大文件场景为 TC3-HMAC-SHA256)签名方案:
sign = Base64( HmacSHA256(key = AppSecret, data = canonicalString) )其中 canonicalString 必须严格满足:
%20 而非 +);= 连接,参数间用 & 拼接;AppId、Timestamp、Nonce 为强制字段,缺一不可。对照下表逐项排查:
现象 / 错误码 | 根因 | 处理动作 |
|---|---|---|
| 签名不一致 | 比对密钥是否正确、参数字典序与编码是否合规,用官方签名调试工具交叉验证 |
| 时间戳偏差超过 5 分钟 | 校准服务器时间并同步 NTP,检查时区设置 |
| SecretId 不存在 | 到控制台确认密钥未被删除/禁用,注意去除首尾空格 |
| 密钥类型不对 | 使用腾讯云 API 密钥类型的 SecretId/SecretKey |
大文件报签名超限 | 默认签名方式不支持大文件 | 指定新签名方式: |
| 网络不通或域名未加白 | 检查网络、代理配置,微信小程序需把腾讯云域名加入 request 合法域名 |
登录态 / cookie 缺失 | 渠道依赖登录态票据 | 引导用户重新进入核身流程获取有效票据 |
| 接口调用超时(上限 5 秒) | 控制图片/视频大小,优化网络状况 |
建议:优先用官方 SDK 调用,SDK 内含签名生成逻辑,可避免自行组装复杂签名导致的各类错误。子账号调用还需确认 CAM 策略已授予慧眼相关操作权限。
服务端调用成功后,仍可能返回业务错误码。以下基于腾讯云慧眼官方错误码整理,按类别对照:
系统返回码
返回码 | 含义 | 处理动作 |
|---|---|---|
0 | 成功 | — |
2 / 3 / 17 | 调用方式出错 | 对照接入文档检查调用姿势 |
4 / 7 / 8 | 服务异常 | 稍后重试或联系客服 |
14 | 本次校验已完成 | 无需重复提交 |
15 | token 过期 | 重新拉取 token 后重试 |
18 | 超出限频次数 | 做调用节流 + 退避重试 |
19 | 超出有效期 | 重新发起核身流程 |
活体检测返回码
返回码 | 含义 | 处理动作 |
|---|---|---|
1001 | 引擎超时 | 稍后重试 |
1003 / 1004 / 1005 | 人脸验证失败 | 引导用户重试 |
1007 | 命中风控逻辑 | 结合设备风险标签进一步判断 |
1202 | 光线不佳 | 提示用户在光源充足的室内环境验证 |
证件图像比对返回码
返回码 | 含义 | 处理动作 |
|---|---|---|
2001 | 引擎超时 | 稍后重试 |
2002 / 2003 | 姓名 / 身份证号有误 | 提示用户核对后重试 |
2005 / 2007 | 未查询到身份 / 照片信息 | 引导通过其他渠道验证 |
2006 | 姓名与身份证号不匹配 | 提示核实身份后重试 |
2011 | 疑似非活体 | 引导确认为本人后重试 |
2012 | 检测到多张人脸 | 提示保持视频中只有本人 |
2013 | 脸部未完整露出 | 提示正脸面对屏幕 |
2014 | 视频像素太低 | 提示更换手机重试 |
2015 / 2016 | 比对失败 / 相似度未达阈值 | 引导确认身份后重试 |
说明:返回码是否计费与业务是否开通相关,完整清单以官方错误码文档为准。API 侧公共错误码(如
InvalidParameterValue.BizTokenIllegal、UnauthorizedOperation.Nonactivated)表示 BizToken 非法或服务未开通,需先到控制台开通服务并核对 BizToken。
很多"看起来是代码问题"的失败,其实来自设备环境。这类问题需要在交互上给出明确提示,而不是笼统报错:
1202,提示在光源充足的室内环境验证。GetFaceIdResult 可返回设备风险标签,如 01 Root/越狱、03 模拟器、05 摄像头被劫持等,命中时结合业务风控处置。碰到调用失败时,按这个顺序走:
如果按上述方式仍无法定位,保留完整的调用日志(含 RequestId、错误码、请求时间与参数),联系官方技术支持协助排查。
排查过程中如需查阅最新错误码与接入文档,可参考腾讯云慧眼人脸核身的官方文档。当前慧眼产品正在开展限时特惠活动,低至 3.3 折,详情见活动页面。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。