百度ai平台人脸识别需先申请服务获取api key和secret key,再通过鉴权接口获取access_token;在thinkphp中封装baiduface类管理token,调用人脸对比与活体检测接口时须base64编码图片、校验返回状态及业务字段。

准备百度AI平台应用凭证
进入百度AI开放平台,用百度账号登录。在控制台中搜索“人脸识别”,进入服务页面后点击“立即申请”。审核通过后,前往“应用列表”创建新应用,勾选“人脸对比V3”“活体检测V3”等所需能力,系统会生成 API Key 和 Secret Key。这两个密钥必须妥善保存,后续所有请求都依赖它们获取 access_token。
在ThinkPHP中封装鉴权逻辑
建议在 app/common/ 或 app/library/ 下新建 BaiduFace.php 类,统一管理 token 获取与刷新逻辑:
- 每次调用前检查本地缓存的 token 是否过期(有效期30天,但建议按实际响应中的
expires_in字段动态判断) - 使用
curlPOST 请求https://aip.baidubce.com/oauth/2.0/token,传入grant_type=client_credentials、client_id、client_secret - 将返回的
access_token写入 ThinkPHP 的Cache::set(),设置合理过期时间(如 25 天),避免频繁重取
调用人脸对比与活体检测接口
以人脸对比为例,接口地址为 https://aip.baidubce.com/rest/2.0/face/v3/match;活体检测则用 /rest/2.0/face/v3/liveness/detect。关键点包括:
- 图片需转为 Base64 字符串(注意去除 data:image/jpeg;base64, 前缀),或上传至可公开访问的 URL(推荐 Base64,更可控)
- 请求必须是 POST,
Content-Type: application/json,参数以 JSON 格式提交 - 人脸对比至少传两个 image 字段(image1/image2),指定 type 为 BASE64;活体检测只需一个 image,同时可传
liveness_control控制检测强度 - 务必校验返回状态码(
error_code === 0)和业务字段(如result.score大于阈值才视为匹配成功)
集成到ThinkPHP控制器中
在控制器方法中实例化封装类,传入配置好的密钥,再调用对应方法。例如:
- 接收前端上传的两张照片,用
file_get_contents+base64_encode转码 - 调用
BaiduFace::match($img1Base64, $img2Base64),捕获异常并返回结构化结果 - 对活体检测结果重点判断
result.liveness是否为"real",而非仅看error_code - 敏感操作(如门禁通行)建议组合使用:先活体检测 → 再人脸比对 → 最后验证用户组内身份(需提前注册人脸入库)
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











