近些年,不法分子盗用他人的电话信息实施诈骗严重影响了部分人的正常生活。针对这一情况,运营商也加强了对高危电话用户进行二次实人、实名、语音认证,提醒用户使用的电话卡涉嫌法律风险并承诺合规使用;但在实际落地上也面临挑战,不仅会增加人力等成本,还很容易出错。作为一名软件开发工程师,我开始尝试和调研,希望可以通过更加智能和降本增效的方式来解决这一问题。
在调研的过程中,我发现腾讯云AI推出的意愿核身功能就挺匹配。但意愿核身功能会不会被第三方软件攻击呢,他们的核验结果是不是一定准确呢?
带着这些疑问,我去查阅了官方资料,发现腾讯云AI 意愿核身功能是结合人脸核身与实时音视频技术打造的一款满足实名、实人、真实意愿的产品,还是首批通过国家信通院人脸识别评估的产品,并且荣获四级(优秀级)安全防护等级。流程上也很简单:第一步对客户的身份证件进行OCR识别,保证身份证的真实性;第二步让客户进行人脸核身,保证该客户身份的真实性;最后让客户进行意愿核身,保证客户的真实意愿。不仅如此,腾讯云AI 意愿核身也提供了微信小程序、微信H5、SDK等多种接入方式。
接下来,我将详细讲述我是如何接入腾讯云AI 意愿核身的。
我们先进入腾讯云AI 人脸核身控制台 ,首次使用人脸核身服务的用户,需要先开通人脸核身服务。直接 点击提交申请,按照实际情况填写信息,提交申请。
特别提醒:1. 互联网行业和金融行业必须上传业务相关营业资质。
2. 因为 腾讯云AI 意愿核身不仅支持权威库比对,还 支持客户自传照片,所以需要的功能组合为:活体人脸核身(完成活体检测后照片与权威库比对)和活体人脸比对(完成活体检测后照片与上传照片比对)。
我们可以根据自己的业务需求,选择相对应的接入模式,申请对应的业务。
需要注意以下几点:1. 只能个人政务/个人办理政府业务(政府机构或事业单位)、教育(学校)、医疗(公立医疗机构、互联网医院、私立医疗机构)和商业服务(公证)才能使用微信原生H5(浮层模式),其他机构可以使用微信H5(普通模式)。
2. 只有政务民生(政府机构或事业单位)、 教育(学校)、 医疗(公立医疗机构、互联网医院、私立医疗机构)、 金融业(银行、信托、公募基金、证券/期货、保险、消费金融)、 快递业与邮政(寄件/收件)、 交通服务(打车、航空、地铁、水运、城市交通卡、城市共享交通、火车、公交公司、长途客运、租车、高速服务)、 生活服务(生活缴费)、 IT科技(基础电信运营商、转售移动通信)、 旅游(酒店服务)、 商业服务(公证)和 社交(直播)才能使用微信小程序。
3. 如果需要申请微信原生H5(浮层模式)和微信小程序,但是没有对应的微信小程序和公众号,可以前往微信公众平台进行申请。
4. 申请微信原生H5(浮层模式)和微信小程序需要相应的资质文件。
我们可以先去官网上了解一下腾讯云AI 意愿核身 、计费错误码等信息。
在相关的业务通过审核之后,我们需要联系腾讯云AI 人脸核身助手,完成意愿核身业务的配置。
我们需要个人密钥。在腾讯云访问管理的 API密钥管理页面 ,我们新建了个人密钥。
注意:所申请的API密钥需要妥善保管。
小程序开发需要授权, 打开二维码 ,小程序管理员扫码后,单击自定义权限,只勾选人脸核身权限,将该权限授权给慧眼第三方平台,操作步骤如下图所示:
使用腾讯云AI 意愿核身需要开启实时播放音视频流 (live-player) 和实时录制音视频流(live-pusher),所以我们要登录 微信公众平台 开启对应的权限 。
登录 微信公众平台,给腾讯云AI 意愿核身需要的域名加白名单权限
相关操作如下所示:
1. 需要将以下域名添加到 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;
2.需要将以下域名添加到 socket 合法域名:wss://wss.im.qcloud.com;wss://wss.tim.qq.com;
3.需要将以下域名添加到 uploadFile 合法域名:https://cos.ap-shanghai.myqcloud.com;https://faceid.qq.com;
4.需要将以下域名添加到 uploadFile 合法域名:https://cos.ap-shanghai.myqcloud.com;https://faceid.qq.com;
下载 意愿核身小程序 SDK ,将 verify_mpsdk 文件夹放到小程序项目根目录,调用 init 方法,初始化意愿核身 SDK。
微信小程序接入意愿核身,腾讯云AI 团队也提供了意愿核身 demo,可以供我们参考。
//app.js
App({
onLaunch: function () {
// 初始化意愿核身组件
const Verify = require('/verify_mpsdk/main');
Verify.init();
}
})
// app.json
{
"pages":[
"verify_mpsdk/index/index"
]
}
调用腾讯云AI 意愿核身 实名核身鉴权接口, 获取意愿核身流程标识BizToken。Java SDK的引入可以参考Java SDK接入指引。
特别提示:需要传入意愿核身所需字段(字段名 IntentionVerifyText);SecretId和SecretKey在准备接入的第五步就可以拿到了。
腾讯云AI 意愿核身提供了多种主流语言接入,包含Java、Python、Go等,我们使用的是Java语言,就以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 进入核身流程。
注意:wx.startVerify方法中的BizToken为第二步接口的返回结果。
// 单击某个按钮时,触发该函数
gotoVerify: function () {
// 去接入方服务端调用DetectAuth接口获取BizToken,需要接入方服务端自行实现
let BizToken = getBizToken();
// 调用实名核身功能
wx.startVerify({
data: {
token: BizToken // BizToken
},
success: (res) => { // 验证成功后触发
// res 包含验证成功的token
},
fail: (err) => { // 验证失败时触发
// err 包含错误码,错误信息
}
});
}
调用腾讯云AI 意愿核身 获取意愿核身结果接口 ,拉取意愿核身结果。
小程序在完成意愿核身之后,回调我们的后台,我们的后台通过获取意愿核身结果接口和第二步生成的BizToken,去腾讯云AI 意愿核身后台拉去用户意愿核身结果。下面的SecretId和SecretKey在准备接入的第五步就可以拿到了。
腾讯云AI 意愿核身提供了多种主流语言接入,包含Java、Python、Go等,我们使用的是Java语言,就以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 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());
}
}
}
下面就是我们接入意愿核身的效果展示了,效果还是很不错的。
意愿核身实践Demo演示https://cloud.tencent.com/developer/video/31897
打开腾讯云AI 人脸核身的控制台,点击计费统计,就可以看到意愿核身的计费量情况。
通过权限管理模块,主账号可以向子账号授权,被授权的子账号就可以看见所有子账号的调用情况。
了解更多腾讯云AI意愿核身产品信息:人脸核身_身份认证__实名认证_实人认证-腾讯云