本文介绍人脸静默活体检测API的Go SDK调用示例。

SDK使用说明

如果需要其他语言的SDK示例代码,您可以通过OpenAPI 开发者门户在线调试工具调试API接口,该工具会自动生成相应API的SDK调用示例代码。您可以单击以下接口链接进行调试:

调试LivenessFaceVerify接口

前提条件

  • 仅支持Go 1.12.0及以上版本。
  • 已添加认证场景,并获取对应的场景ID。具体操作,请参见添加认证场景

引入依赖包

go get github.com/alibabacloud-go/tea-rpc
go get github.com/alibabacloud-go/tea-utils
go get github.com/alibabacloud-go/tea

安装SDK

关于Go SDK源代码,请参见Go SDK包

通过Go mod来管理项目依赖:

go get github.com/alibabacloud-go/cloudauth-20190307/v2@v2.0.3

调用示例

LivenessFaceVerify接口调用示例

关于参数的具体描述,请参见LivenessFaceVerify

package main

import (
	"fmt"
	cloudauth "github.com/alibabacloud-go/cloudauth-20190307/v2/client"
	openapi "github.com/alibabacloud-go/darabonba-openapi/client"
	util "github.com/alibabacloud-go/tea-utils/service"
	"github.com/alibabacloud-go/tea/tea"
)

func CreateClient(endpoint *string) (_result *cloudauth.Client, _err error) {
	config := &openapi.Config{
		// 您的AccessKey ID。
		AccessKeyId: tea.String("您的AccessKey ID"),
		// 您的AccessKey Secret。
		AccessKeySecret: tea.String("您的AccessKey Secret"),
		Endpoint:        endpoint,
		// 设置HTTP代理。
		// HttpProxy: tea.String("http://xx.xx.xx.xx:xxxx"),
		// 设置HTTPS代理。
		// HttpsProxy: tea.String("https://xx.xx.xx.xx:xxxx"),
	}
	_result = &cloudauth.Client{}
	_result, _err = cloudauth.NewClient(config)
	return _result, _err
}

func _main() (_err error) {
	request := &cloudauth.LivenessFaceVerifyRequest{
		// 固定值。
		ProductCode: tea.String("LR_FR_MIN"),
		// 请输入场景ID。
		SceneId: tea.Int64(xxxx),
		OuterOrderNo: tea.String("商户请求的唯一标识"),
		Model: tea.String("FRONT_CAMERA_LIVENESS"),
		// Ip: tea.String("用户IP地址"),
		// UserId: tea.String("用户ID"),
		// Mobile: tea.String("130xxxxxxxx"),
		// DeviceToken: tea.String("通过设备指纹获取的deviceToken"),

		// 请在以下四种方式中选择其一。
		// 1.照片Base64编码。
		// 2.照片OSS Bucket名和文件名。
		// 3.照片OSS的URL地址。

		// 方式一:照片Base64。
		// FaceContrastPicture: tea.String("人脸照片Base64编码"),
		// 方式二:照片OSS Bucket名和文件名。
		// OssBucketName: tea.String("cn-shanghai-aliyun-cloudauth-xxxxx"),
		// OssObjectName: tea.String("verify/xxxxx/xxxxxx.jpeg"),
		// 方式三:照片OSS的URL地址,公网可访问。
		FaceContrastPictureUrl: tea.String("https://cn-shanghai-aliyun-cloudauth-xxxxxx.oss-cn-shanghai.aliyuncs.com/verify/xxxxx/xxxxx.jpeg"),
	}
	response, _err := LivenessFaceVerifyAutoRoute(request)

	// 不支持服务自动路由。
	// response, _err := LivenessFaceVerify(tea.String("cloudauth.cn-shanghai.aliyuncs.com"), request)

	if _err != nil {
		return _err
	}

	if response != nil {
		fmt.Println(*response.Body.RequestId)
		fmt.Println(*response.Body.Code)
		fmt.Println(*response.Body.Message)
		fmt.Println(*response.Body.RequestId)
		fmt.Println(*response.Body.ResultObject.Passed)
		fmt.Println(*response.Body.ResultObject.SubCode)
		fmt.Println(*response.Body.ResultObject.MaterialInfo)
		fmt.Println(*response.Body.ResultObject.CertifyId)
	}

	return _err
}

func LivenessFaceVerifyAutoRoute(request *cloudauth.LivenessFaceVerifyRequest) (_result *cloudauth.LivenessFaceVerifyResponse, _err error) {
	endpoints := []*string{tea.String("cloudauth.cn-shanghai.aliyuncs.com"), tea.String("cloudauth.cn-beijing.aliyuncs.com")}
	var lastResponse *cloudauth.LivenessFaceVerifyResponse
	for _, endpoint := range endpoints {
		response, _err := LivenessFaceVerify(endpoint, request)
		lastResponse = response
		if _err != nil {
			var err = &tea.SDKError{}
			if _t, ok := _err.(*tea.SDKError); ok {
				err = _t
				// 系统异常,切换到下个地域调用。
				if *err.StatusCode == 500 {
					continue
				}
			}
			return _result, _err
		}

		if *response.StatusCode == 500 {
			continue
		}

		if *response.Body.Code == "500"{
			continue
		}

		_result = response
		return _result, _err

	}
	_result = lastResponse
	return _result, _err
}

func LivenessFaceVerify(endpoint *string, request *cloudauth.LivenessFaceVerifyRequest) (_result *cloudauth.LivenessFaceVerifyResponse, _err error) {
	client, _err := CreateClient(endpoint)
	if _err != nil {
		return _result, _err
	}

	// 创建RuntimeObject实例并设置运行参数。
	runtime := &util.RuntimeOptions{}
	runtime.ReadTimeout = tea.Int(10000)
	runtime.ConnectTimeout = tea.Int(10000)

	_body, _err := client.LivenessFaceVerifyWithOptions(request, runtime)
	if _err != nil {
		return _result, _err
	}
	_result = _body
	return _result, _err
}

func main() {
	err := _main()
	if err != nil {
		panic(err)
	}
}