本文介绍了金融级人脸比对方案的Go SDK调用示例。
SDK使用说明
如果需要其他语言的SDK示例代码,您可以通过OpenAPI开发者门户在线调试工具调试API接口。该工具会自动生成相应API的SDK调用示例代码。
详细信息,请参见调试CompareFaceVerify接口。
前提条件
- 仅支持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@vv1.0.5
调用示例
CompareFaceVerify接口调用示例
关于参数的具体描述,请参见纯服务端(API)接入。
package main
import (
"fmt"
cloudauth "github.com/alibabacloud-go/cloudauth-20190307/client"
rpc "github.com/alibabacloud-go/tea-rpc/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 := &rpc.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.CompareFaceVerifyRequest{
// 请输入场景ID。
SceneId: tea.Int64(xxx),
OuterOrderNo: tea.String("商户请求的唯一标识"),
ProductCode: tea.String("PV_FC"),
// 请在以下四种传入人脸照片方式中,选择一种。
// 1.照片Base64编码。
// 2.照片OSS Bucket名和文件名。
// 3.照片OSS的URL地址。
// 4.已经实人认证通过的CertifyId。
// 方式一:照片Base64。
// SourceFaceContrastPicture: tea.String("人脸照片Base64编码"),
// 方式二:照片OSS Bucket名和文件名。
// SourceOssBucketName: tea.String("cn-shanghai-aliyun-cloudauth-xxxxx"),
// SourceOssBucketName: tea.String("verify/xxxxx/xxxxxx.jpeg"),
// 方式三:照片OSS的URL地址,公网可访问。
SourceFaceContrastPictureUrl: tea.String("https://cn-shanghai-aliyun-cloudauth-xxxxxx.oss-cn-shanghai.aliyuncs.com/verify/xxxxx/xxxxx.jpeg"),
// 方式四:已经实人认证通过的CertifyId。
// SourceCertifyId: tea.String("0bfa7c493f850e5178b9f8613634c9xx"),
// 请在以下四种传入底库人脸照片方式中,选择一种
// 1.照片Base64编码。
// 2.照片OSS Bucket名和文件名。
// 3.照片OSS的URL地址。
// 4.已经实人认证通过的CertifyId。
// 方式一:照片Base64。
// TargetFaceContrastPicture: tea.String("人脸照片Base64编码"),
// 方式二:照片OSS Bucket名和文件名。
// TargetOssBucketName: tea.String("cn-shanghai-aliyun-cloudauth-xxxxx"),
// TargetOssObjectName: tea.String("verify/xxxxx/xxxxxx.jpeg"),
// 方式三:照片OSS的URL地址,公网可访问。
TargetFaceContrastPictureUrl: tea.String("https://cn-shanghai-aliyun-cloudauth-xxxxxx.oss-cn-shanghai.aliyuncs.com/verify/xxxxx/xxxxx.jpeg"),
// 方式四:已经实人认证通过的CertifyId。
// TargetCertifyId: tea.String("0bfa7c493f850e5178b9f8613634c9xx")
}
// 推荐,支持服务路由。
response, _err := CompareFaceVerifyAutoRoute(request)
// 不支持服务自动路由。
// response, _err := CompareFaceVerify(tea.String("cloudauth.cn-shanghai.aliyuncs.com"), request)
if _err != nil {
return _err
}
if response != nil {
fmt.Println(*response.RequestId)
fmt.Println(*response.Code)
fmt.Println(*response.Message)
fmt.Println(*response.ResultObject.CertifyId)
fmt.Println(*response.ResultObject.Passed)
fmt.Println(*response.ResultObject.VerifyScore)
}
return _err
}
func CompareFaceVerifyAutoRoute(request *cloudauth.CompareFaceVerifyRequest) (_result *cloudauth.CompareFaceVerifyResponse, _err error) {
// 第一个为主区域Endpoint,第二个为备区域Endpoint。
endpoints := []*string{tea.String("cloudauth.cn-shanghai.aliyuncs.com"), tea.String("cloudauth.cn-beijing.aliyuncs.com")}
var lastResponse *cloudauth.CompareFaceVerifyResponse
for _, endpoint := range endpoints {
response, _err := CompareFaceVerify(endpoint, request)
if _err != nil {
var err = &tea.SDKError{}
if _t, ok := _err.(*tea.SDKError); ok {
err = _t
// 网络异常,切换到下个区域调用。
if tea.BoolValue(util.EqualString(tea.String("ServiceUnavailable"), err.Code)) {
continue
}
}
return _result, _err
}
// 服务端错误,切换到下个区域调用。
if tea.BoolValue(util.EqualString(tea.String("500"), response.Code)) {
continue
}
_result = response
return _result, _err
}
_result = lastResponse
return _result, _err
}
func CompareFaceVerify(endpoint *string, request *cloudauth.CompareFaceVerifyRequest) (_result *cloudauth.CompareFaceVerifyResponse, _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.CompareFaceVerify(request, runtime)
if _err != nil {
return _result, _err
}
_result = _body
return _result, _err
}
func main() {
err := _main()
if err != nil {
panic(err)
}
}