本文介绍了金融级人脸比对方案的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)
  }
}