腾讯云 AI 意愿核身功能是结合人脸核身与实时音视频技术打造的一款满足实名、实人、真实意愿的产品,还是首批通过国家信通院人脸识别评估的产品,并且荣获四级(优秀级)安全防护等级。不仅如此,腾讯云 AI 意愿核身也提供了微信小程序、微信 H5、SDK 等多种接入方式。
本文档将详细介绍如何接入腾讯云 AI 意愿核身,降本增效、更加智能地实现对高危电话用户进行二次实人、实名、语音认证等功能,提醒用户使用的电话卡涉嫌法律风险等,用于预防电信诈骗,为电话合规保驾护航。
准备工作
1. 开通人脸核身
登录 人脸核身控制台,若首次使用人脸核身服务,需要先开通人脸核身服务。单击提交申请,按照实际情况填写信息,即可提交申请。
说明
互联网行业和金融行业必须上传业务相关营业资质。
本次接入需要的功能组合为:活体人脸核身(完成活体检测后照片与权威库比对)和活体人脸比对(完成活体检测后照片与上传照片比对)。

2. 业务申请
根据业务需求,选择相对应的接入模式,申请对应的业务。


选择接入方式,微信原生 H5 的接入方式有行业限制,且资质文件中主体与需要接入公众号主体一致,详细行业类目和资质材料请查阅 微信 HTML5 及小程序资质文件列表。
如果需要申请微信原生 H5 和微信小程序,但是没有对应的微信小程序和公众号,可以前往 微信公众平台 进行申请。
4. 意愿核身配置
相关业务通过审核后,请联系 人脸核身助手,完成意愿核身业务的配置。


5. 获取 API 密钥
登录官网控制台 创建 API 密钥(SecretId 和 SecretKey)。
注意
API 密钥需要妥善保管。
接入意愿核身
第一步:授予权限与设置白名单
为人脸核身授权
小程序开发需要授权,打开 二维码,小程序管理员扫码后,单击自定义权限,只勾选人脸核身权限,将该权限授权给人脸核身第三方平台。


开启实时播放/录制音视频流权限
使用腾讯云AI 意愿核身需要开启实时播放音视频流 (live-player) 和实时录制音视频流(live-pusher),登录 微信公众平台 开启对应的权限。


相关域名添加白名单
登录 微信公众平台,给意愿核身需要的域名添加白名单权限,相关操作如下所示:
将以下域名添加至 request 合法域名:
https://events.tim.qq.com;https://faceid.qq.com;https://grouptalk.c2c.qq.com
。
https://pingtas.qq.com;https://web.sdk.qcloud.com;https://webim.tim.qq.com;https://yun.tim.qq.com
。将以下域名添加至 socket 合法域名:
wss://wss.im.qcloud.com;wss://wss.tim.qq.com
。将以下域名添加至 uploadFile 合法域名:
https://cos.ap-shanghai.myqcloud.com;https://faceid.qq.com
。将以下域名添加到 uploadFile 合法域名:
https://cos.ap-shanghai.myqcloud.com;https://faceid.qq.com
。

第二步:初始化意愿核身 SDK
//app.jsApp({onLaunch: function () {// 初始化意愿核身组件const Verify = require('/verify_mpsdk/main');Verify.init();}})// app.json{"pages":["verify_mpsdk/index/index"]}
第三步:后端接入意愿核身实名核身鉴权接口
注意
需传入意愿核身所需字段 IntentionVerifyText。
意愿核身提供了多种主流语言接入,包含 Java、Python、Go 等,以 Java 为例:
import com.tencentcloudapi.common.Credential;import com.tencentcloudapi.common.profile.ClientProfile;import com.tencentcloudapi.common.profile.HttpProfile;import com.tencentcloudapi.common.exception.TencentCloudSDKException;import com.tencentcloudapi.faceid.v20180301.FaceidClient;import com.tencentcloudapi.faceid.v20180301.models.*;public class DetectAuth{public static void main(String [] args) {try{// 实例化一个认证对象,入参需要传入腾讯云账户secretId,secretKey,此处还需注意密钥对的保密// 密钥可前往https://console.cloud.tencent.com/cam/capi网站进行获取Credential cred = new Credential("SecretId", "SecretKey");// 实例化一个http选项,可选的,没有特殊需求可以跳过HttpProfile httpProfile = new HttpProfile();httpProfile.setEndpoint("faceid.tencentcloudapi.com");// 实例化一个client选项,可选的,没有特殊需求可以跳过ClientProfile clientProfile = new ClientProfile();clientProfile.setHttpProfile(httpProfile);// 实例化要请求产品的client对象,clientProfile是可选的FaceidClient client = new FaceidClient(cred, "", clientProfile);// 实例化一个请求对象,每个接口都会对应一个request对象DetectAuthRequest req = new DetectAuthRequest();// 返回的resp是一个DetectAuthResponse的实例,与请求对象对应DetectAuthResponse resp = client.DetectAuth(req);// 输出json格式的字符串回包System.out.println(DetectAuthResponse.toJsonString(resp));} catch (TencentCloudSDKException e) {System.out.println(e.toString());}}}
第四步:进入意愿核身流程
接入方服务端将 BizToken 返回给接入方小程序,然后小程序调用核身方法 startVerify 进入核身流程。
// 单击某个按钮时,触发该函数gotoVerify: function () {// 去接入方服务端调用DetectAuth接口获取BizToken,需要接入方服务端自行实现let BizToken = getBizToken();// 调用实名核身功能wx.startVerify({data: {token: BizToken // BizToken},success: (res) => { // 验证成功后触发// res 包含验证成功的token},fail: (err) => { // 验证失败时触发// err 包含错误码,错误信息}});}
第五步:后端接入获取意愿核身结果接口
import com.tencentcloudapi.common.Credential;import com.tencentcloudapi.common.profile.ClientProfile;import com.tencentcloudapi.common.profile.HttpProfile;import com.tencentcloudapi.common.exception.TencentCloudSDKException;import com.tencentcloudapi.faceid.v20180301.FaceidClient;import com.tencentcloudapi.faceid.v20180301.models.*;public class GetDetectInfoEnhanced{public static void main(String [] args) {try{// 实例化一个认证对象,入参需要传入腾讯云账户secretId,secretKey,此处还需注意密钥对的保密// 密钥可前往https://console.cloud.tencent.com/cam/capi网站进行获取Credential cred = new Credential("SecretId", "SecretKey");// 实例化一个http选项,可选的,没有特殊需求可以跳过HttpProfile httpProfile = new HttpProfile();httpProfile.setEndpoint("faceid.tencentcloudapi.com");// 实例化一个client选项,可选的,没有特殊需求可以跳过ClientProfile clientProfile = new ClientProfile();clientProfile.setHttpProfile(httpProfile);// 实例化要请求产品的client对象,clientProfile是可选的FaceidClient client = new FaceidClient(cred, "", clientProfile);// 实例化一个请求对象,每个接口都会对应一个request对象GetDetectInfoEnhancedRequest req = new GetDetectInfoEnhancedRequest();// 返回的resp是一个GetDetectInfoEnhancedResponse的实例,与请求对象对应GetDetectInfoEnhancedResponse resp = client.GetDetectInfoEnhanced(req);// 输出json格式的字符串回包System.out.println(GetDetectInfoEnhancedResponse.toJsonString(resp));} catch (TencentCloudSDKException e) {System.out.println(e.toString());}}}