Node.js SDK
本章节介绍新版Node.js SDK,您可以参考本章节进行快速集成开发。
准备工作
- 注册华为账号并开通华为云,并完成实名认证,账号不能处于欠费或冻结状态。
- 已具备开发环境,支持Node 10.16.1 及其以上版本。
- 登录“我的凭证 > 访问秘钥”页面,获取Access Key(AK)和Secret Access Key(SK)。
图1 获取AK、SK
- 登录“我的凭证”页面,获取“IAM用户名”“、账号名”以及待使用区域的“项目ID”。调用服务时会用到这些信息,请提前保存。
本样例以“华北-北京四”区域为例,获取对应的项目ID(project_id)。
图2 我的凭证
安装SDK
使用SDK前,需要安装“@huaweicloud/huaweicloud-sdk-core”和“@huaweicloud/huaweicloud-sdk-ivs”。
推荐您使用 npm 安装 SDK。
npm install @huaweicloud/huaweicloud-sdk-core npm i @huaweicloud/huaweicloud-sdk-ivs
开始使用SDK
- 导入依赖模块
const core = require('@huaweicloud/huaweicloud-sdk-core'); const ivs = require("@huaweicloud/huaweicloud-sdk-ivs");
- 配置客户端链接参数
- 默认配置
const client = ivs.IvsClient.newBuilder()
- 网络代理(可选)
// 使用代理服务器(可选) client.withProxyAgent("http://username:password@proxy.huaweicloud.com:8080")
- SSL配置(可选)
// 配置跳过服务端证书验证(可选) process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0"
- 默认配置
- 配置认证信息
配置AK、SK、project_id信息。华为云通过AK识别用户的身份,通过SK对请求数据进行签名验证,用于确保请求的机密性、完整性和请求者身份的正确性。AK、SK和project_id获取方法请参见准备工作
const ak = process.env.HUAWEICLOUD_SDK_AK; const sk = process.env.HUAWEICLOUD_SDK_SK; const project_id = process.env.PROJECT_ID; const credentials = new core.BasicCredentials() .withAk(ak) .withSk(sk) .withProjectId(project_id)
- 认证用的 ak 和sk 硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全。
- 本示例以 ak 和 sk 保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK,HUAWEICLOUD_SDK_SK和PROJECT_ID。
图3 Windows环境新建环境变量
- 初始化客户端
指定云服务endpoint方式
// 指定终端节点,以 IVS 服务北京四的 endpoint 为例 const endpoint = "https://ivs.cn-north-4.myhuaweicloud.com"; const client = ivs.IvsClient.newBuilder() .withCredential(credentials) .withEndpoint(endpoint) .build();
endpoint是华为云各服务应用区域和各服务的终端节点,详情请查看 地区和终端节点 。
- 发送请求并查看响应
// 以调用人证核身标准版(三要素)接口 DetectStandardByIdCardImage 为例 const request = new ivs.DetectStandardByIdCardImageRequest(); const body = new ivs.IvsStandardByIdCardImageRequestBody(); const listIvsStandardByIdCardImageRequestBodyDataReqData = newArray(); listIvsStandardByIdCardImageRequestBodyDataReqData.push( new ivs.ReqDataByIdCardImage() .withIdcardImage1("身份证人像面图像数据,使用base64编码") .withIdcardImage2("身份证国徽面图像数据,使用base64编码") .withFaceImage("现场人像图像数据,使用base64编码") ); const databody = new ivs.IvsStandardByIdCardImageRequestBodyData(); databody.withReqData(listIvsStandardByIdCardImageRequestBodyDataReqData); const metabody = new ivs.Meta(); metabody.withUuid("唯一标识此次请求的ID,用户自定义,不超过64位。"); body.withData(databody); body.withMeta(metabody); request.withBody(body); const result = client.detectStandardByIdCardImage(request); result.then(result => { console.log("JSON.stringify(result)::" + JSON.stringify(result)); }).catch(ex => { console.log("exception:" + JSON.stringify(ex)); });
详细的SDK介绍请参见SDK中心、Node.js SDK使用指导、Node.js SDK视频指导。
SDK demo 代码解析
人证核身标准版(三要素)
- 方式一:使用身份证图片、人像图片进行校验
const request = new ivs.DetectStandardByIdCardImageRequest(); const body = new ivs.IvsStandardByIdCardImageRequestBody(); const listIvsStandardByIdCardImageRequestBodyDataReqData = newArray(); listIvsStandardByIdCardImageRequestBodyDataReqData.push( new ivs.ReqDataByIdCardImage() .withIdcardImage1("身份证人像面图像数据,使用base64编码") .withIdcardImage2("身份证国徽面图像数据,使用base64编码") .withFaceImage("现场人像图像数据,使用base64编码,") ); const databody = new ivs.IvsStandardByIdCardImageRequestBodyData(); databody.withReqData(listIvsStandardByIdCardImageRequestBodyDataReqData); const metabody = new ivs.Meta(); metabody.withUuid("唯一标识此次请求的ID,用户自定义,不超过64位。例如10eb0091-887f-4839-9929-cbc884f1e20e"); body.withData(databody); body.withMeta(metabody); request.withBody(body); const result = client.detectStandardByIdCardImage(request); result.then(result => { console.log("JSON.stringify(result)::" + JSON.stringify(result)); }).catch(ex => { console.log("exception:" + JSON.stringify(ex)); });
- 方式二:使用身份证姓名、身份证号码文本,人像图片进行校验
const request = new ivs.DetectStandardByNameAndIdRequest(); const body = new ivs.IvsStandardByNameAndIdRequestBody(); const listIvsStandardByNameAndIdRequestBodyDataReqData = newArray(); listIvsStandardByNameAndIdRequestBodyDataReqData.push( new ivs.StandardReqDataByNameAndId() .withVerificationName("被验证人的姓名") .withVerificationId("被验证人的身份证号码") .withFaceImage("现场人像图像数据,使用base64编码") ); const databody = new ivs.IvsStandardByNameAndIdRequestBodyData(); databody.withReqData(listIvsStandardByNameAndIdRequestBodyDataReqData); const metabody = new ivs.Meta(); metabody.withUuid("唯一标识此次请求的ID,用户自定义,不超过64位。例如10eb0091-887f-4839-9929-cbc884f1e20e"); body.withData(databody); body.withMeta(metabody); request.withBody(body); const result = client.detectStandardByNameAndId(request); result.then(result => { console.log("JSON.stringify(result)::" + JSON.stringify(result)); }).catch(ex => { console.log("exception:" + JSON.stringify(ex)); });
- 方式三:使用现场拍摄的人像视频数据,实现活体人证核身
const request = new ivs.DetectStandardByVideoAndIdCardImageRequest(); const body = new ivs.IvsStandardByVideoAndIdCardImageRequestBody(); const listDataReqData = new Array(); listDataReqData.push( new ivs.ReqDataByVideoAndIdCardImage() .withIdcardImage1("身份证人像面图像数据,使用base64编码") .withIdcardImage2("身份证国徽面图像数据,使用base64编码") .withVideo("现场拍摄人像视频数据,使用base64编码") .withActions("动作代码顺序列表") ); const databody = new ivs.IvsStandardByVideoAndIdCardImageRequestBodyData(); databody.withReqData(listDataReqData); const metabody = new ivs.Meta(); metabody.withUuid("唯一标识此次请求的ID,用户自定义,不超过64位。例如10eb0091-887f-4839-9929-cbc884f1e20e"); body.withData(databody); body.withMeta(metabody); request.withBody(body); const result = client.detectStandardByVideoAndIdCardImage(request); result.then(result => { console.log("JSON.stringify(result)::" + JSON.stringify(result)); }).catch(ex => { console.log("exception:" + JSON.stringify(ex)); });
- 方式四:使用身份证姓名、身份证号码文本和现场拍摄的人像视频数据,实现活体人证核身
const request = new ivs.DetectStandardByVideoAndNameAndIdRequest(); const body = new ivs.IvsStandardByVideoAndNameAndIdRequestBody(); const listDataReqData = new Array(); listDataReqData.push( new ivs.StandardReqDataByVideoAndNameAndId() .withVerificationName("被验证人的姓名") .withVerificationId("被验证人的身份证号码") .withVideo("现场拍摄人像视频数据,使用base64编码") .withActions("动作代码顺序列表") ); const databody = new ivs.IvsStandardByVideoAndNameAndIdRequestBodyData(); databody.withReqData(listDataReqData); const metabody = new ivs.Meta(); metabody.withUuid("唯一标识此次请求的ID,用户自定义,不超过64位。例如10eb0091-887f-4839-9929-cbc884f1e20e"); body.withData(databody); body.withMeta(metabody); request.withBody(body); const result = client.detectStandardByVideoAndNameAndId(request); result.then(result => { console.log("JSON.stringify(result)::" + JSON.stringify(result)); }).catch(ex => { console.log("exception:" + JSON.stringify(ex)); });
人证核身证件版(二要素)
- 方式一:使用身份证图片进行校验
const request = new ivs.DetectExtentionByIdCardImageRequest(); const body = new ivs.IvsExtentionByIdCardImageRequestBody(); const listIvsExtentionByIdCardImageRequestBodyDataReqData = newArray(); listIvsExtentionByIdCardImageRequestBodyDataReqData.push( new ivs.ExtentionReqDataByIdCardImage() .withIdcardImage1("身份证人像面图像数据,使用base64编码") .withIdcardImage2("身份证国徽面图像数据,使用base64编码") ); const databody = new ivs.IvsExtentionByIdCardImageRequestBodyData(); databody.withReqData(listIvsExtentionByIdCardImageRequestBodyDataReqData); const metabody = new ivs.Meta(); metabody.withUuid("唯一标识此次请求的ID,用户自定义,不超过64位。例如10eb0091-887f-4839-9929-cbc884f1e20e"); body.withData(databody); body.withMeta(metabody); request.withBody(body); const result = client.detectExtentionByIdCardImage(request); result.then(result => { console.log("JSON.stringify(result)::" + JSON.stringify(result)); }).catch(ex => { console.log("exception:" + JSON.stringify(ex)); });
- 方式二:使用身份证姓名、身份证号码文本进行校验
const request = new ivs.DetectExtentionByNameAndIdRequest(); const body = new ivs.IvsExtentionByNameAndIdRequestBody(); const listIvsExtentionByNameAndIdRequestBodyDataReqData = newArray(); listIvsExtentionByNameAndIdRequestBodyDataReqData.push( new ivs.ExtentionReqDataByNameAndId() .withVerificationName("被验证人的姓名") .withVerificationId("被验证人的身份证号码") ); const databody = new ivs.IvsExtentionByNameAndIdRequestBodyData(); databody.withReqData(listIvsExtentionByNameAndIdRequestBodyDataReqData); const metabody = new ivs.Meta(); metabody.withUuid("唯一标识此次请求的ID,用户自定义,不超过64位。例如10eb0091-887f-4839-9929-cbc884f1e20e"); body.withData(databody); body.withMeta(metabody); request.withBody(body); const result = client.detectExtentionByNameAndId(request); result.then(result => { console.log("JSON.stringify(result)::" + JSON.stringify(result)); }).catch(ex => { console.log("exception:" + JSON.stringify(ex)); });
代码示例自动生成
API Explorer提供API检索及平台调试,支持全量快速检索、可视化调试、帮助文档查看和在线咨询。
您只需要在API Explorer中修改接口参数,即可自动生成对应的代码示例。同时,可在集成开发环境CloudIDE中完成代码的构建、调试和运行等操作。