需依次启用系统生物识别、确保HTTPS/localhost安全上下文、开启chrome://flags实验性API、授予网站身份凭证与摄像头权限、规范调用WebAuthn/FaceDetector代码。

如果您在网页中调用 `navigator.credentials.get()` 或 `navigator.faceDetection` 等生物认证相关 API 时,谷歌浏览器未弹出人脸识别授权提示,或提示“设备不支持”“权限被拒绝”,则可能是由于浏览器未启用对应生物认证接口、页面未运行于安全上下文,或系统级生物识别功能未开启。以下是开启网页端人脸识别请求的具体操作步骤:
一、确认并启用系统级生物识别功能
谷歌浏览器依赖操作系统底层的生物认证框架(如 Windows Hello、macOS Face ID、Android BiometricPrompt)提供支持。若系统未启用生物识别,浏览器无法调用相关接口。
1、Windows 用户:进入“设置 → 账户 → 登录选项”,在“Windows Hello”区域点击“设置”人脸识别,按向导完成面部录入。
2、macOS 用户:前往“系统设置 → 隐私与安全性 → 生物识别”,确保已启用“使用面容 ID”,且当前用户已完成 Face ID 注册。
3、Chrome OS 用户:打开“设置 → 个人资料 → PIN 码与生物识别”,点击“添加生物识别”,按提示完成面部扫描。
4、检查设备是否显示“已注册至少一种生物识别方式”状态,否则浏览器将直接忽略 `PublicKeyCredential` 或 `FaceDetector` 请求。
二、确保网页运行于安全上下文
Chrome 强制要求所有涉及生物认证的 Web API(如 `navigator.credentials.create()`、`navigator.faceDetection`)必须在安全上下文中执行,即协议必须为 HTTPS,或主机为 localhost/127.0.0.1(含端口)。
1、若使用本地开发服务器,请确认地址栏显示为 https://localhost:3000 或 http://127.0.0.1:8080,而非 file:// 协议路径。
2、若部署在测试环境,需配置有效 TLS 证书;自签名证书需手动导入系统信任库,并在 Chrome 地址栏点击锁形图标 → “连接是安全的” → “证书有效”确认无警告。
3、禁用 Chrome 的非安全上下文降级策略:在地址栏输入 chrome://flags/#unsafely-treat-insecure-origin-as-secure,在输入框中填入测试域名(如 http://test.local),将右侧设为 Enabled,点击右下角 Relaunch 重启浏览器。
三、启用 Chrome 实验性生物认证标志
部分生物认证能力(如 Face Detection API、Web Authentication API 的 Face ID 后备机制)仍处于实验阶段,需手动开启对应 flags 才可调用。
1、在 Chrome 地址栏输入 chrome://flags/#enable-experimental-web-platform-features,将该选项设为 Enabled。
2、另开标签页输入 chrome://flags/#face-detection-api,确保其状态为 Enabled。
3、再访问 chrome://flags/#web-authentication-ios(仅限 macOS/iOS 版 Chrome Beta),启用后重启浏览器。
4、重启完成后,在开发者工具 Console 中执行 typeof navigator.faceDetection,返回 "object" 表示 Face Detection API 已就绪;执行 typeof navigator.credentials 返回 "object" 表示 WebAuthn 接口可用。
四、检查网站权限设置中的生物认证开关
Chrome 将生物认证归类于“身份凭证”和“摄像头”双重权限范畴,需同时授予网站对应权限,否则调用会静默失败。
1、访问目标网页后,点击地址栏左侧的锁形图标或摄像头图标。
2、选择“网站设置”,在“权限”列表中确认“身份凭证”设为“允许”,且“摄像头”未被设为“阻止”。
3、若未见“身份凭证”选项,点击“更多设置”,在“所有站点权限”中搜索目标域名,手动将 “Allow credentials management” 设为 Allow。
4、关闭并重新加载网页,再次触发人脸识别调用逻辑(如点击登录按钮),观察是否弹出系统级生物认证确认窗。
五、验证网页代码是否符合规范调用流程
即使浏览器配置正确,前端代码若未遵循 Web Authentication API 或 Shape Detection API 规范,仍将导致调用失败或无响应。
1、WebAuthn 人脸登录调用须使用 publicKey 选项并声明 authenticatorSelection.authenticatorAttachment = "platform",以强制调用设备内置生物识别器。
2、调用 FaceDetector 前,需先确保视频流已通过 navigator.mediaDevices.getUserMedia({video:true}) 获取并赋值给 <video> 元素,且该元素已调用 .play() 并处于播放状态。
3、检测代码中是否存在 try/catch 捕获但未抛出错误,例如 faceDetector.detect(video).catch(e => console.log(e)) 会掩盖 "NotSupportedError: Face detection is not supported" 类型报错。











