更新时间:2024-11-04 GMT+08:00
分享

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

  1. 导入依赖模块
    const core = require('@huaweicloud/huaweicloud-sdk-core');
    const ivs = require("@huaweicloud/huaweicloud-sdk-ivs");
  2. 配置客户端链接参数
    • 默认配置
      const client = ivs.IvsClient.newBuilder()
    • 网络代理(可选)
      // 使用代理服务器(可选)
      client.withProxyAgent("http://username:password@proxy.huaweicloud.com:8080")
    • SSL配置(可选)
      // 配置跳过服务端证书验证(可选)
      process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0"
  3. 配置认证信息
    配置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环境新建环境变量
  4. 初始化客户端
    指定云服务endpoint方式
    // 指定终端节点,以 IVS 服务北京四的 endpoint 为例
    const endpoint = "https://ivs.cn-north-4.myhuaweicloud.com";
    const client = ivs.IvsClient.newBuilder()
                                .withCredential(credentials)
                                .withEndpoint(endpoint)
                                .build();

    endpoint是华为云各服务应用区域和各服务的终端节点,详情请查看 地区和终端节点

  5. 发送请求并查看响应
    // 以调用人证核身标准版(三要素)接口 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中完成代码的构建、调试和运行等操作。

图4 API Explorer

相关文档