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

Go SDK

本章节介绍人证核身服务Go SDK,您可以参考本章节进行快速集成开发。

准备工作

  • 注册华为账号并开通华为云,并完成实名认证,账号不能处于欠费或冻结状态。
  • 已开通人证核身服务。如未开通,请登录人证核身管理控制台开通所需服务。
  • 已具备开发环境,Go SDK 支持 go 1.14 及以上版本,可执行 go version 检查当前 Go 的版本信息。
  • 登录“我的凭证 > 访问秘钥”页面,获取Access Key(AK)和Secret Access Key(SK)。
    图1 获取AK、SK
  • 登录“我的凭证”页面,获取“IAM用户名”“、账号名”以及待使用区域的“项目ID”。调用服务时会用到这些信息,请提前保存。

    本样例以“华北-北京四”区域为例,获取对应的项目ID(project_id)。

    图2 我的凭证

安装SDK

使用SDK前需要安装华为云Go SDK 库。

# 安装华为云Go库
go get -u github.com/huaweicloud/huaweicloud-sdk-go-v3
# 安装依赖
go get github.com/json-iterator/go

开始使用SDK

  1. 导入依赖模块
    import (
    	"fmt"
            "os"
    	"github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
        // 导入IVS sdk
    	ivs "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/ivs/v2"
    	"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/ivs/v2/model"
    	"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/ivs/v2/region"
    )
  2. 配置认证信息

    配置AK、SK信息。华为云通过AK识别用户的身份,通过SK对请求数据进行签名验证,用于确保请求的机密性、完整性和请求者身份的正确性。AK、SK获取方法请参见准备工作

    // 创建AK、SK认证凭据
    func GetCredential(ak, sk string) basic.Credentials {
    	return basic.NewCredentialsBuilder().
    		WithAk(ak).
    		WithSk(sk).
    		Build()
    }

    初始化认证信息:

    ak := os.Getenv("HUAWEICLOUD_SDK_AK")
    sk := os.Getenv("HUAWEICLOUD_SDK_SK")
    client := GetCredential(ak, sk)
    • 认证用的 ak 和sk 硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全。
    • 本示例以 ak 和 sk 保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。
    图3 Windows环境新建环境变量
  3. 初始化客户端

    指定region方式

    // 选择服务部署区域
    func GetClient(auth basic.Credentials) *ivs.IvsClient {
    	return ivs.NewIvsClient(
    		ivs.IvsClientBuilder().
    			WithRegion(region.CN_NORTH_4).
    			WithCredential(auth).
    			Build())
    }

    CN_NORTH_4:华北-北京四

    CN_NORTH_1:华北-北京一

  4. 发送请求并查看响应
    # 以调用标准版(三要素)接口 DetectStandardByIdCardImage 为例
    request := &model.DetectStandardByIdCardImageRequest{}
    response, err := client.DetectStandardByIdCardImage(request)
    if err == nil {
        fmt.Printf("%+v\n", response)
    } else {
        fmt.Println(err)
    }
  5. 异常处理
    表1 异常处理

    一级分类

    一级分类说明

    ServiceResponseError

    服务响应异常

    url.Error

    url异常

    // 异常处理
    response, err := client.DetectStandardByIdCardImage(request)
    if err == nil {
        fmt.Printf("%+v\n", response)
    } else {
        fmt.Println(err)
    }

详细的SDK介绍请参见SDK中心Go SDK使用指导Go SDK使用视频

SDK demo代码解析

人证核身标准版(三要素)

  • 方式一:使用身份证图片、人像图片进行校验
    request := &model.DetectStandardByIdCardImageRequest{}
    idcardImage2ReqDataReqDataByIdCardImage:= "身份证国徽面图像数据,使用base64编码"
    var listReqDataIvsStandardByIdCardImageRequestBodyData = []model.ReqDataByIdCardImage{
        {
            IdcardImage1: "身份证人像面图像数据,使用base64编码",
            IdcardImage2: &idcardImage2ReqDataReqDataByIdCardImage,
            FaceImage: "现场人像图像数据,使用base64编码,",
        },
    }
    databody := &model.IvsStandardByIdCardImageRequestBodyData{
    	ReqData: &listReqDataIvsStandardByIdCardImageRequestBodyData,
    }
    uuidMetaMeta:= "唯一标识此次请求的ID,用户自定义,不超过64位。例如10eb0091-887f-4839-9929-cbc884f1e20e"
    metabody := &model.Meta{
    	Uuid: &uuidMetaMeta,
    }
    request.Body = &model.IvsStandardByIdCardImageRequestBody{
    	Data: databody,
    	Meta: metabody,
    }
    response, err := client.DetectStandardByIdCardImage(request)
    if err == nil {
        fmt.Printf("%+v\n", response)
    } else {
        fmt.Println(err)
    }
  • 方式二:使用身份证姓名、身份证号码文本,人像图片进行校验
    request := &model.DetectStandardByNameAndIdRequest{}
    var listReqDataIvsStandardByNameAndIdRequestBodyData = []model.StandardReqDataByNameAndId{
        {
            VerificationName: "被验证人的姓名",
            VerificationId: "被验证人的身份证号码",
            FaceImage: "现场人像图像数据,使用base64编码",
        },
    }
    databody := &model.IvsStandardByNameAndIdRequestBodyData{
    	ReqData: &listReqDataIvsStandardByNameAndIdRequestBodyData,
    }
    uuidMetaMeta:= "唯一标识此次请求的ID,用户自定义,不超过64位。例如10eb0091-887f-4839-9929-cbc884f1e20e"
    metabody := &model.Meta{
    	Uuid: &uuidMetaMeta,
    }
    request.Body = &model.IvsStandardByNameAndIdRequestBody{
    	Data: databody,
    	Meta: metabody,
    }
    response, err := client.DetectStandardByNameAndId(request)
    if err == nil {
        fmt.Printf("%+v\n", response)
    } else {
        fmt.Println(err)
    }
  • 方式三:使用身份证姓名、身份证号码文本和现场拍摄的人像视频数据,实现活体人证核身
    request := &model.DetectStandardByVideoAndNameAndIdRequest{}
    var listReqDataData = []model.StandardReqDataByVideoAndNameAndId{
    	{
    		VerificationName: "被验证人的姓名",
    		VerificationId:   "被验证人的身份证号码",
    		Video:            "现场拍摄人像视频数据,使用base64编码",
    		Actions:          "动作代码顺序列表",
    	},
    }
    databody := &model.IvsStandardByVideoAndNameAndIdRequestBodyData{
    	ReqData: &listReqDataData,
    }
    uuidMeta := "唯一标识此次请求的ID,用户自定义,不超过64位。例如10eb0091-887f-4839-9929-cbc884f1e20e"
    metabody := &model.Meta{
    	Uuid: &uuidMeta,
    }
    request.Body = &model.IvsStandardByVideoAndNameAndIdRequestBody{
    	Data: databody,
    	Meta: metabody,
    }
    response, err := client.DetectStandardByVideoAndNameAndId(request)
    if err == nil {
    	fmt.Printf("%+v\n", response)
    } else {
    	fmt.Println(err)
    }
  • 方式四:使用现场拍摄的人像视频数据,实现活体人证核身
    request := &model.DetectStandardByVideoAndIdCardImageRequest{}
    idcardImage2ReqData:= "身份证国徽面图像数据,使用base64编码"
    var listReqDataData = []model.ReqDataByVideoAndIdCardImage{
        {
            IdcardImage1: "身份证人像面图像数据,使用base64编码",
            IdcardImage2: &idcardImage2ReqData,
            Video: "现场拍摄人像视频数据,使用base64编码",
            Actions: "动作代码顺序列表",
        },
    }
    databody := &model.IvsStandardByVideoAndIdCardImageRequestBodyData{
    	ReqData: &listReqDataData,
    }
    uuidMeta:= "唯一标识此次请求的ID,用户自定义,不超过64位。例如10eb0091-887f-4839-9929-cbc884f1e20e"
    metabody := &model.Meta{
    	Uuid: &uuidMeta,
    }
    request.Body = &model.IvsStandardByVideoAndIdCardImageRequestBody{
    	Data: databody,
    	Meta: metabody,
    }
    response, err := client.DetectStandardByVideoAndIdCardImage(request)
    if err == nil {
        fmt.Printf("%+v\n", response)
    } else {
        fmt.Println(err)
    }

人证核身证件版(二要素)

  • 方式一:使用身份证图片进行校验
    request := &model.DetectExtentionByIdCardImageRequest{}
    idcardImage2ReqDataExtentionReqDataByIdCardImage:= "身份证国徽面图像数据,使用base64编码"
    var listReqDataIvsExtentionByIdCardImageRequestBodyData = []model.ExtentionReqDataByIdCardImage{
        {
            IdcardImage1: "身份证人像面图像数据,使用base64编码",
            IdcardImage2: &idcardImage2ReqDataExtentionReqDataByIdCardImage,
        },
    }
    databody := &model.IvsExtentionByIdCardImageRequestBodyData{
    	ReqData: &listReqDataIvsExtentionByIdCardImageRequestBodyData,
    }
    uuidMetaMeta:= "唯一标识此次请求的ID,用户自定义,不超过64位。例如10eb0091-887f-4839-9929-cbc884f1e20e"
    metabody := &model.Meta{
    	Uuid: &uuidMetaMeta,
    }
    request.Body = &model.IvsExtentionByIdCardImageRequestBody{
    	Data: databody,
    	Meta: metabody,
    }
    response, err := client.DetectExtentionByIdCardImage(request)
    if err == nil {
        fmt.Printf("%+v\n", response)
    } else {
        fmt.Println(err)
    }
  • 方式二:使用身份证姓名、身份证号码文本进行校验
    request := &model.DetectExtentionByNameAndIdRequest{}
    var listReqDataIvsExtentionByNameAndIdRequestBodyData = []model.ExtentionReqDataByNameAndId{
        {
            VerificationName: "被验证人的姓名",
            VerificationId: "被验证人的身份证号码",
        },
    }
    databody := &model.IvsExtentionByNameAndIdRequestBodyData{
    	ReqData: &listReqDataIvsExtentionByNameAndIdRequestBodyData,
    }
    uuidMetaMeta:= "唯一标识此次请求的ID,用户自定义,不超过64位。例如10eb0091-887f-4839-9929-cbc884f1e20e"
    metabody := &model.Meta{
    	Uuid: &uuidMetaMeta,
    }
    request.Body = &model.IvsExtentionByNameAndIdRequestBody{
    	Data: databody,
    	Meta: metabody,
    }
    response, err := client.DetectExtentionByNameAndId(request)
    if err == nil {
        fmt.Printf("%+v\n", response)
    } else {
        fmt.Println(err)
    }

代码示例自动生成

API Explorer提供API检索及平台调试,支持全量快速检索、可视化调试、帮助文档查看和在线咨询。

您只需要在API Explorer中修改接口参数,即可自动生成对应的代码示例。同时,可在集成开发环境CloudIDE中完成代码的构建、调试和运行等操作。

图4 API Explorer

相关文档