Go SDK调用示例

本文介绍了增强版活体检测方案的Go SDK调用示例。

SDK使用说明

如果需要其他语言的SDK示例代码,您可以通过OpenAPI开发者门户在线调试工具调试API接口。该工具会自动生成相应API的SDK调用示例代码,详细信息,请参见:

前提条件

  • 需要使用的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
go get -u github.com/aliyun/credentials-go
说明

Credentials工具配置方法,请参见身份验证配置

安装SDK

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

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

go get github.com/alibabacloud-go/cloudauth-20200618@vv1.0.4

调用示例

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

InitSmartVerify接口调用示例

package main

import (
  "fmt"
  cloudauth "github.com/alibabacloud-go/cloudauth-20200618/client"
  rpc "github.com/alibabacloud-go/tea-rpc/client"
  util "github.com/alibabacloud-go/tea-utils/service"
  "github.com/alibabacloud-go/tea/tea"
  "github.com/aliyun/credentials-go/credentials"
)

func CreateClient(endpoint *string) (_result *cloudauth.Client, _err error) {
  //阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
  //强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
  //本示例通过阿里云Credentials工具从环境变量中读取AccessKey,来实现API访问的身份验证。
  // 初始化Credential。
  credential, _err := credentials.NewCredential(nil)
	if _err != nil {
		panic(_err)
	}
	// 初始化Client。
	config := &openapi.Config{
		// 使用Credential配置凭证。
		Credential: credential,
		Endpoint:   endpoint,
		// 设置HTTP代理。
		// HttpProxy: tea.String("http://xx.xx.xx.xx:xxxx"),
		// 设置HTTPS代理。
		// HttpsProxy: tea.String("https://username:password@xxx.xxx.xxx.xxx:9999"),
	}
	//_result = &cloudauth.Client{}
	_result, _err = cloudauth.NewClient(config)
	return _result, _err
}

func _main() (_err error) {
  request := &cloudauth.InitSmartVerifyRequest{
    // 请输入场景ID。
    SceneId:      tea.Int64(xxx),
    OuterOrderNo: tea.String("商户请求的唯一标识"),
    // 证件类型,固定值。
    Mode:     tea.String("ACCOUNT_SAFE"),
    CertType: tea.String("IDENTITY_CARD"),
    // CertName: tea.String("张三"),
    // CertNo: tea.String("xxx"),
    // MetaInfo环境参数,需要通过客户端SDK获取。
    MetaInfo:      tea.String("{\"zimVer\":\"3.0.0\",\"appVersion\": \"1\",\"bioMetaInfo\": \"4.1.0:11501568,0\",\n        \"appName\": \"com.aliyun.cloudauth\",\"deviceType\": \"ios\",\"osVersion\": \"iOS 10.3.2\",\"apdidToken\": \"\",\"deviceModel\": \"iPhone9,1\"}"),
    Mobile:        tea.String("130xxxxxxxx"),
    // Ip:            tea.String("114.xxx.xxx.xxx"),
    // UserId:        tea.String("12345xxxx"),
    // CallbackUrl:   tea.String("https://www.aliyundoc.com"),
    // CallbackToken: tea.String("xxxxxxx")
  }
   response, _err := InitSmartVerifyAutoRoute(request)

  // 不支持服务自动路由。
  // response, _err := InitSmartVerify(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.RequestId)
    fmt.Println(*response.ResultObject.CertifyId)
  }

  return _err
}

func InitSmartVerifyAutoRoute(request *cloudauth.InitSmartVerifyRequest) (_result *cloudauth.InitSmartVerifyResponse, _err error) {
  endpoints := []*string{tea.String("cloudauth.cn-shanghai.aliyuncs.com"), tea.String("cloudauth.cn-beijing.aliyuncs.com")}
  var lastResponse *cloudauth.InitSmartVerifyResponse
  for _, endpoint := range endpoints {
    response, _err := InitSmartVerify(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 InitSmartVerify(endpoint *string, request *cloudauth.InitSmartVerifyRequest) (_result *cloudauth.InitSmartVerifyResponse, _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.InitSmartVerify(request, runtime)
  if _err != nil {
    return _result, _err
  }
  _result = _body
  return _result, _err
}

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

DescribeSmartVerify接口调用示例

package main

import (
  "fmt"
  cloudauth "github.com/alibabacloud-go/cloudauth-20200618/client"
  rpc "github.com/alibabacloud-go/tea-rpc/client"
  util "github.com/alibabacloud-go/tea-utils/service"
  "github.com/alibabacloud-go/tea/tea"
  "github.com/aliyun/credentials-go/credentials"
)

func CreateClient(endpoint *string) (_result *cloudauth.Client, _err error) {
  //阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
  //强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
  //本示例通过阿里云Credentials工具从环境变量中读取AccessKey,来实现API访问的身份验证。
  // 初始化Credential。
  credential, _err := credentials.NewCredential(nil)
	if _err != nil {
		panic(_err)
	}
	// 初始化Client。
	config := &openapi.Config{
		// 使用Credential配置凭证。
		Credential: credential,
		Endpoint:   endpoint,
		// 设置HTTP代理。
		// HttpProxy: tea.String("http://xx.xx.xx.xx:xxxx"),
		// 设置HTTPS代理。
		// HttpsProxy: tea.String("https://username:password@xxx.xxx.xxx.xxx:9999"),
	}
	//_result = &cloudauth.Client{}
	_result, _err = cloudauth.NewClient(config)
	return _result, _err
}

func _main() (_err error) {
  request := &cloudauth.DescribeSmartVerifyRequest{
    // 请输入场景ID。
    SceneId:      tea.Int64(xxx),
    CertifyId: tea.String("91707dc296d469ad38e4c5efa6a0xxxx"),
  }
  response, _err := DescribeSmartVerifyAutoRoute(request)

  // 不支持服务自动路由。
  // response, _err := DescribeSmartVerify(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.Passed);
    fmt.Println(*response.ResultObject.SubCode);
    fmt.Println(*response.ResultObject.MaterialInfo);
    fmt.Println(*response.ResultObject.PassedScore);
  }

  return _err
}

func DescribeSmartVerifyAutoRoute(request *cloudauth.DescribeSmartVerifyRequest) (_result *cloudauth.DescribeSmartVerifyResponse, _err error) {
  endpoints := []*string{tea.String("cloudauth.cn-shanghai.aliyuncs.com"), tea.String("cloudauth.cn-beijing.aliyuncs.com")}
  var lastResponse *cloudauth.DescribeSmartVerifyResponse
  for _, endpoint := range endpoints {
    response, _err := DescribeSmartVerify(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 DescribeSmartVerify(endpoint *string, request *cloudauth.DescribeSmartVerifyRequest) (_result *cloudauth.DescribeSmartVerifyResponse, _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.DescribeSmartVerify(request, runtime)
  if _err != nil {
    return _result, _err
  }
  _result = _body
  return _result, _err
}

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