文档

SDK调用示例

更新时间:

本文介绍在金融级活体人脸比对方案纯服务端接入场景下,如何下载和集成适合不同编程语言的SDK,并调用OpenAPI的示例流程。

服务端需要集成的OpenAPI

CompareFaceVerify-发起认证请求:通过纯服务端接入实现实人认证。

说明

步骤一:开通服务

在使用金融级实人认证服务之前,您需要开通服务。具体操作,请参见开通金融级实人认证服务

步骤二:创建RAM用户并授权

在集成SDK前,您需要创建一个用户调用SDK的用户身份,获取身份关联的OpenAPI访问凭据,并授予访问云上资源的访问权限。如何创建和授权RAM用户,以及如何生成用于调用服务的AccessKey,请参见授权RAM用户访问服务

步骤三:添加认证场景

认证场景指您的用户使用金融级实人认证服务完成用户实人认证的不同场景,例如,登录、支付等。您可以添加一个或多个场景,并为不同的场景配置不同的认证方案。调用InitFaceVerify发起认证请求时,需要传输认证场景ID。如何添加认证场景并获取认证场景ID, 请参见添加认证场景

说明

在添加认证场景时,您可以授权阿里云访问指定OSS存储空间,用于存储认证的资料图片。具体操作,请参见授权金融级实人认证访问OSS存储空间

步骤四:集成SDK并编辑写代码

服务接入点

目前支持的接入地域如下表所示。

重要

建议您参考本文示例代码,配置主备地域Endpoint。在主Endpoint发生故障时可以自动切换到备用Endpoint,保证系统的持续可用性。

地域

服务地址

VPC地址

全局接入地址

华东2(上海)

IPv4:cloudauth.cn-shanghai.aliyuncs.com

cloudauth-vpc.cn-shanghai.aliyuncs.com

  • IPv4:cloudauth.aliyuncs.com

  • IPv6:cloudauth-dualstack.aliyuncs.com

IPv6:cloudauth-dualstack.aliyuncs.com

华北2(北京)

IPv4:cloudauth.cn-beijing.aliyuncs.com

cloudauth-vpc.cn-beijing.aliyuncs.com

IPv6:cloudauth-dualstack.cn-beijing.aliyuncs.com

SDK安装与源码下载

您可根据业务实际的技术选型,选择合适的SDK语言进行集成。

支持语言

Github源码地址

SDK下载地址

Java

Alibaba Cloud Green SDK for Java

下载Java SDK

Python

Alibaba Cloud Green SDK for Python

下载Python SDK

Typescript

Alibaba Cloud Green SDK for Typescript

下载TypeScript SDK

Go

Alibaba Cloud Green SDK for Go

下载Go SDK

PHP

Alibaba Cloud Green SDK for PHP

下载PHP SDK

C#

Alibaba Cloud Green SDK for C#

下载C# SDK

C++

Alibaba Cloud Green SDK for C++

下载C++ SDK

编写代码

下面以Java语言为例介绍(要求JDK 1.8及以上版本)。

  1. 在pom.xml中添加如下依赖,即可在Maven工程中使用SDK。获取最新版本及其他安装方式信息,请参见下载Java SDK

    • Java SDK依赖

      <dependency>
       <groupId>com.aliyun</groupId>
       <artifactId>cloudauth20190307</artifactId>
       <version>2.1.1</version>
      </dependency>
    • 身份验证依赖。请查看ChangeLog.txt获取所有已发布的版本列表(建议使用最新的版本)。

      <dependency>
         <groupId>com.aliyun</groupId>
         <artifactId>credentials-java</artifactId>
         <version>LATEST</version>
      </dependency>
      说明

      本示例通过阿里云Credentials工具从环境变量中读取AccessKey,来实现API访问的身份验证。如何配置环境变量,请参见身份验证配置

  2. 示例代码。

    import com.aliyun.cloudauth20190307.Client;
    import com.aliyun.cloudauth20190307.models.CompareFaceVerifyRequest;
    import com.aliyun.cloudauth20190307.models.CompareFaceVerifyResponse;
    import com.aliyun.teaopenapi.models.Config;
    import com.aliyun.teautil.models.RuntimeOptions;
    
    import java.util.Arrays;
    import java.util.List;
    
    public class CompareFaceVerify {
        public static void main(String[] args) {
    
            // 通过以下代码创建API请求并设置参数。
            CompareFaceVerifyRequest request = new CompareFaceVerifyRequest();
            // 请输入场景ID+L。
            request.setSceneId(0L);
    
            request.setOuterOrderNo("商户请求的唯一标识");
            request.setProductCode("PV_FC");
            // 请在以下四种传入人脸照片方式中,选择一种。
            // 1.照片Base64编码。
            // 2.照片OSS bucket名和文件名。
            // 3.照片OSS的URL地址。
            // 4.已经实人认证通过的CertifyId。
    
            // 方式一:照片Base64。
            request.setSourceFaceContrastPicture("人脸照片Base64编码");
            // 方式二:照片OSS bucket名和文件名。
            //request.setSourceOssBucketName("cn-shanghai-aliyun-cloudauth-xxxxx");
            //request.setSourceOssObjectName("verify/xxxxx/xxxxxx.jpeg");
            // 方式三:照片OSS的URL地址,公网可访问。
            //request.setSourceFaceContrastPictureUrl("https://cn-shanghai-aliyun-cloudauth-xxxxxx.oss-cn-shanghai.aliyuncs.com/verify/xxxxx/xxxxx.jpeg")
            // 方式四:已经实人认证通过的CertifyId。
            //request.setSourceCertifyId("0bfa7c493f850e5178b9f8613634c9xx");
    
            // 请在以下四种传入底库人脸照片方式中,选择一种
            // 1.照片Base64编码。
            // 2.照片OSS bucket名和文件名。
            // 3.照片OSS的URL地址。
            // 4.已经实人认证通过的CertifyId。
    
            // 方式一:照片Base64。
            request.setTargetFaceContrastPicture("底库人脸照片Base64编码");
            // 方式二:照片OSS bucket名和文件名。
            //request.setTargetOssBucketName("cn-shanghai-aliyun-cloudauth-xxxxx");
            //request.setTargetOssObjectName("verify/xxxxx/xxxxxx.jpeg");
            // 方式三:照片OSS的URL地址,公网可访问。
            //request.setTargetFaceContrastPictureUrl("https://cn-shanghai-aliyun-cloudauth-xxxxxx.oss-cn-shanghai.aliyuncs.com/verify/xxxxx/xxxxx.jpeg")
            // 方式四:已经实人认证通过的CertifyId。
            //request.setTargetCertifyId("0bfa7c493f850e5178b9f8613634c9xx");
    
            // 推荐,支持服务路由。
            CompareFaceVerifyResponse response = compareFaceVerifyAutoRoute(request);
    
            // 不支持服务自动路由。
            //CompareFaceVerifyResponse response = compareFaceVerify("cloudauth.cn-shanghai.aliyuncs.com", request);
    
            System.out.println(response.getBody().getRequestId());
            System.out.println(response.getBody().getCode());
            System.out.println(response.getBody().getMessage());
            System.out.println(response.getBody().getResultObject() == null ? null
                    : response.getBody().getResultObject().getPassed());
            System.out.println(response.getBody().getResultObject() == null ? null
                    : response.getBody().getResultObject().getVerifyScore());
        }
    
        private static CompareFaceVerifyResponse compareFaceVerifyAutoRoute(CompareFaceVerifyRequest request) {
            // 第一个为主区域Endpoint,第二个为备区域Endpoint。
            List<String> endpoints = Arrays.asList("cloudauth.cn-shanghai.aliyuncs.com", "cloudauth.cn-beijing.aliyuncs.com");
            CompareFaceVerifyResponse lastResponse = null;
            for (int i=0; i<endpoints.size(); i++) {
                try {
                    CompareFaceVerifyResponse response = compareFaceVerify(endpoints.get(i), request);
                    lastResponse = response;
    
                    // 服务端错误,切换到下个区域调用。
                    if(response != null){
                        if(500 == response.getStatusCode()){
                            continue;
                        }
                        if(response.getBody() != null){
                            if("500".equals(response.getBody().getCode())){
                                continue;
                            }
                        }
                    }
    
                    return response;
                } catch (Exception e) {
                    e.printStackTrace();
                    if(i == endpoints.size()-1){
                        throw new RuntimeException(e);
                    }
                }
            }
    
            return lastResponse;
        }
    
        private static CompareFaceVerifyResponse compareFaceVerify(String endpoint, CompareFaceVerifyRequest request)
                throws Exception {
            // 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
            // 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
            // 本示例通过阿里云Credentials工具从环境变量中读取AccessKey,来实现API访问的身份验证。如何配置环境变量,请参见https://help.aliyun.com/document_detail/378657.html。
            com.aliyun.credentials.Client credentialClient = new com.aliyun.credentials.Client();
            Config config = new Config();
            config.setCredential(credentialClient);
            config.setEndpoint(endpoint);
            // 设置https代理。
            //config.setHttpsProxy("https://xx.xx.xx.xx:xxxx");
            // 设置http代理。
            //config.setHttpProxy("http://xx.xx.xx.xx:xxxx");
            Client client = new Client(config);
    
            // 创建RuntimeObject实例并设置运行参数。
            RuntimeOptions runtime = new RuntimeOptions();
            runtime.readTimeout = 10000;
            runtime.connectTimeout = 10000;
    
            return client.compareFaceVerifyWithOptions(request, runtime);
        }
    }

其他语言调用示例

PHP

<?php

namespace AlibabaCloud\SDK\Sample\Verify\Compare;

use AlibabaCloud\Credentials\Credential;
use AlibabaCloud\SDK\Cloudauth\V20190307\Cloudauth;
use AlibabaCloud\SDK\Cloudauth\V20190307\Models\CompareFaceVerifyRequest;
use AlibabaCloud\SDK\Cloudauth\V20190307\Models\CompareFaceVerifyResponse;
use Darabonba\OpenApi\Models\Config;
use AlibabaCloud\Tea\Utils\Utils;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
use Exception;

class CompareFaceVerify {

    /**
     * createClient
     * @param string $endpoint
     * @return Cloudauth
     */
    public static function createClient(string $endpoint): Cloudauth
    {
        // 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
        // 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
        // 本示例通过阿里云Credentials工具从环境变量中读取AccessKey,来实现API访问的身份验证。如何配置环境变量,请参见 https://help.aliyun.com/document_detail/311677.html。 
        $credential = new Credential([]);
        $config = new Config([
			  // 使用credential配置凭证
    		    "credential" => $credential,
            // 设置HTTP代理。
            // "httpProxy" => "<http://xx.xx.xx.xx:xxxx>",
            // 设置HTTPS代理
            // "httpsProxy" => "<https://xx.xx.xx.xx:xxxx>",
            "endpoint" => $endpoint

        ]);
        return new Cloudauth($config);
    }

    /**
     * main
     * @return void
     */
    public static function main(){
        $request = new CompareFaceVerifyRequest([
            // 请输入场景ID。
            "sceneId" => 0,
            "outerOrderNo" => "<商户请求的唯一标识>",
            // 要接入的认证方案。
            "productCode" => "<PV_FC>",
            // 请在以下四种传入人脸照片方式中,选择一种。
            // 1.照片Base64编码。
            // 2.照片OSS Bucket名和文件名。
            // 3.照片OSS的URL地址。
            // 4.已经实人认证通过的CertifyId。

            // 方式一:照片Base64。
            // "sourceFaceContrastPicture" => "<人脸照片Base64编码>",
            // 方式二:照片OSS Bucket名和文件名。
            // "sourceOssBucketName" => "<cn-shanghai-aliyun-cloudauth-xxxxx>",
            // "sourceOssObjectName" => "<verify/xxxxx/xxxxxx.jpeg>",
            // 方式三:照片OSS的URL地址,公网可访问。
            "sourceFaceContrastPictureUrl" => "<https://cn-shanghai-aliyun-cloudauth-xxxxxx.oss-cn-shanghai.aliyuncs.com/verify/xxxxx/xxxxx.jpeg>",
            // 方式四:已经实人认证通过的CertifyId。
            // "sourceCertifyId" => "<0bfa7c493f850e5178b9f8613634c9xx>",

            // 请在以下四种传入底库人脸照片方式中,选择一种。
            // 1.照片Base64编码。
            // 2.照片OSS Bucket名和文件名。
            // 3.照片OSS的URL地址。
            // 4.已经实人认证通过的CertifyId。

            // 方式一:照片Base64。
            // "targetFaceContrastPicture" => "<人脸照片Base64编码>",
            // 方式二:照片OSS Bucket名和文件名。
            // "targetOssBucketName" => "<cn-shanghai-aliyun-cloudauth-xxxxx>",
            // "targetOssObjectName" => "<verify/xxxxx/xxxxxx.jpeg>",
            // 方式三:照片OSS的URL地址,公网可访问。
            "targetFaceContrastPictureUrl" => "<https://cn-shanghai-aliyun-cloudauth-xxxxxx.oss-cn-shanghai.aliyuncs.com/verify/xxxxx/xxxxx.jpeg>",
            // 方式四:已经实人认证通过的CertifyId。
            // "targetCertifyId" => "<0bfa7c493f850e5178b9f8613634c9xx>",
        ]);
        // 推荐,支持服务路由。
        $response = self::compareFaceVerifyAutoRoute($request);
        // 不支持服务自动路由。
        // $response = self::compareFaceVerify("cloudauth.cn-shanghai.aliyuncs.com", $request);
        var_dump($response->requestId);
        var_dump($response->code);
        var_dump($response->message);
        var_dump($response->resultObject->verifyScore);
        var_dump($response->resultObject->passed);
    }

    /**
     * compareFaceVerifyAutoRoute
     * @param CompareFaceVerifyRequest $request
     * @return CompareFaceVerifyResponse|null
     */
    public static function compareFaceVerifyAutoRoute(CompareFaceVerifyRequest $request): ?CompareFaceVerifyResponse
    {
        $endpoints = [
            "cloudauth.cn-shanghai.aliyuncs.com",
            "cloudauth.cn-beijing.aliyuncs.com"
        ];
        foreach($endpoints as $endpoint){
            try {
                $response = self::compareFaceVerify($endpoint, $request);
                if (Utils::equalNumber(500, $response->statusCode)) {
                    continue;
                }
                if(Utils::equalString("500", $response->body->code)){
                    continue;
                }
                return $response;
            }
            catch (Exception $err) {
                var_dump($err -> getCode());
                var_dump($err -> getMessage());
            }
        }
        return null;
    }

    /**
     * compareFaceVerify
     * @param string $endpoint
     * @param CompareFaceVerifyRequest $request
     * @return CompareFaceVerifyResponse
     */
    public static function compareFaceVerify(string $endpoint, CompareFaceVerifyRequest $request): CompareFaceVerifyResponse
    {
        $client = self::createClient($endpoint);
        // 创建RuntimeObject实例并设置运行参数。
        $runtime = new RuntimeOptions([]);
        $runtime->readTimeout = 10000;
        $runtime->connectTimeout = 10000;
        return $client->compareFaceVerifyWithOptions($request, $runtime);
    }
}
$path = __DIR__ . \DIRECTORY_SEPARATOR . \DIRECTORY_SEPARATOR . 'vendor' . \DIRECTORY_SEPARATOR . 'autoload.php';
if (file_exists($path)) {
    require_once $path;
}
CompareFaceVerify::main();

Python

from alibabacloud_cloudauth20190307.client import Client as CloudauthClient
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_cloudauth20190307 import models as cloudauth_models
from alibabacloud_tea_util.client import Client as UtilClient
from alibabacloud_tea_util import models as util_models
from alibabacloud_credentials.client import Client as CredClient

class CompareFaceVerify:
    def __init__(self):
        pass

    @staticmethod
    def create_client(
            endpoint: str,
    ) -> CloudauthClient:
        # 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
        # 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
        # 本示例通过阿里云Credentials工具从环境变量中读取AccessKey,来实现API访问的身份验证。如何配置环境变量,请参见 https://help.aliyun.com/zh/sdk/developer-reference/configure-credentials。
        cred=CredClient()
        config = open_api_models.Config(
            credential=cred,
            # 设置HTTP代理。
            # http_proxy='http://xx.xx.xx.xx:xxxx',
            # 设置HTTPS代理。
            # https_proxy='https://username:password@xxx.xxx.xxx.xxx:9999',
            endpoint=endpoint
        )
        return CloudauthClient(config)

    @staticmethod
    def main() -> None:
        request = cloudauth_models.CompareFaceVerifyRequest(
            # 请输入场景ID。
            scene_id=0,
            outer_order_no='商户请求的唯一标识',
            product_code='PV_FC',

            # 请在以下四种传入人脸照片方式中,选择一种。
            # 1.照片Base64编码。
            # 2.照片OSS Bucket名和文件名。
            # 3.照片OSS的URL地址。
            # 4.已经实人认证通过的CertifyId。

            # 方式一:照片Base64。
            # source_face_contrast_picture='人脸照片Base64编码',
            # 方式二:照片OSS Bucket名和文件名。
            # source_oss_bucket_name='cn-shanghai-aliyun-cloudauth-xxxxx',
            # source_oss_object_name='verify/xxxxx/xxxxxx.jpeg',
            # 方式三:照片OSS的URL地址,公网可访问。
            source_face_contrast_picture_url='https=//cn-shanghai-aliyun-cloudauth-xxxxxx.oss-cn-shanghai.aliyuncs.com/verify/xxxxx/xxxxx.jpeg',
            # 方式四:已经实人认证通过的CertifyId。
            # source_certify_id='0bfa7c493f850e5178b9f8613634c9xx',

            # 请在以下四种传入底库人脸照片方式中,选择一种:
            # 1.照片Base64编码。
            # 2.照片OSS Bucket名和文件名。
            # 3.照片OSS的URL地址。
            # 4.已经实人认证通过的CertifyId。

            # 方式一:照片Base64。
            # target_face_contrast_picture='底库人脸照片Base64编码'
            # 方式二:照片OSS Bucket名和文件名。
            # target_oss_bucket_name='cn-shanghai-aliyun-cloudauth-xxxxx',
            # target_oss_object_name='verify/xxxxx/xxxxxx.jpeg',
            # 方式三:照片OSS的URL地址,公网可访问。
            target_face_contrast_picture_url='https://cn-shanghai-aliyun-cloudauth-xxxxxx.oss-cn-shanghai.aliyuncs.com/verify/xxxxx/xxxxx.jpeg',
            # 方式四:已经实人认证通过的CertifyId。
            # target_certify_id='0bfa7c493f850e5178b9f8613634c9xx'
        )
        response = CompareFaceVerify.compare_face_verify_auto_route(request)
        # 不支持服务自动路由。
        # response = CompareFaceVerify.compare_face_verify('cloudauth.cn-shanghai.aliyuncs.com', request)
        print(response.body.request_id)
        print(response.body.code)
        print(response.body.message)
        print(response.body.result_object.passed)
        print(response.body.result_object.verify_score)
        print(response.body.result_object.certify_id)

    @staticmethod
    def compare_face_verify_auto_route(
            request: cloudauth_models.CompareFaceVerifyRequest,
    ) -> cloudauth_models.CompareFaceVerifyResponse:
        endpoints = [
            'cloudauth.cn-shanghai.aliyuncs.com',
            'cloudauth.cn-beijing.aliyuncs.com'
        ]
        for endpoint in endpoints:
            try:
                response = CompareFaceVerify.compare_face_verify(endpoint, request)
                if UtilClient.equal_number(500, response.status_code):
                    continue
                if response is not None and response.body is not None:
                    if UtilClient.equal_string("500", response.body.code):
                        continue
                return response
            except Exception as err:
                continue
        return None

    @staticmethod
    def compare_face_verify(
            endpoint: str,
            request: cloudauth_models.CompareFaceVerifyRequest,
    ) -> cloudauth_models.CompareFaceVerifyResponse:
        client = CompareFaceVerify.create_client(endpoint)
        # 创建RuntimeObject实例并设置运行参数。
        runtime = util_models.RuntimeOptions()
        runtime.read_timeout = 10000
        runtime.connect_timeout = 10000
        return client.compare_face_verify_with_options(request, runtime)


if __name__ == '__main__':
    CompareFaceVerify.main()

GO

package main

import (
	"fmt"
	cloudauth "github.com/alibabacloud-go/cloudauth-20190307/v3/client"
	openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
	util "github.com/alibabacloud-go/tea-utils/v2/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.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.Body.RequestId)
		fmt.Println(*response.Body.Code)
		fmt.Println(*response.Body.Message)
		fmt.Println(*response.Body.ResultObject.CertifyId)
		fmt.Println(*response.Body.ResultObject.Passed)
		fmt.Println(*response.Body.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)
		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 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.CompareFaceVerifyWithOptions(request, runtime)
	if _err != nil {
		return _result, _err
	}
	_result = _body
	return _result, _err
}

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

.NET

using System;

using System.Collections.Generic;
using Tea;

namespace CompareFaceVerify
{
    public class Program
    {

        public static AlibabaCloud.SDK.Cloudauth20190307.Client CreateClient(string endpoint)
        {
            AlibabaCloud.OpenApiClient.Models.Config config = new AlibabaCloud.OpenApiClient.Models.Config
            {
               Credential=new Aliyun.Credentials.Client(null)
            };
  					config.Endpoint = endpoint;
            return new AlibabaCloud.SDK.Cloudauth20190307.Client(config);
        }

        public static void Main(string[] args)
        {
            AlibabaCloud.SDK.Cloudauth20190307.Models.CompareFaceVerifyRequest request = new AlibabaCloud.SDK.Cloudauth20190307.Models.CompareFaceVerifyRequest
            {
                // 请输入场景ID。
                SceneId = xxx,
                OuterOrderNo = "商户请求的唯一标识",
                ProductCode = "PV_FC",
                // 请在以下四种传入人脸照片方式中,选择一种。
                // 1.照片Base64编码。
                // 2.照片OSS Bucket名和文件名。
                // 3.照片OSS的URL地址。
                // 4.已经实人认证通过的CertifyId。

                // 方式一:照片Base64。
                //SourceFaceContrastPicture = "人脸照片Base64编码",
                // 方式二:照片OSS Bucket名和文件名。
                // SourceOssBucketName = "cn-shanghai-aliyun-cloudauth-xxxxx",
                // SourceOssBucketName = "verify/xxxxx/xxxxxx.jpeg",
                // 方式三:照片OSS的URL地址,公网可访问。
                SourceFaceContrastPictureUrl = "https=//cn-shanghai-aliyun-cloudauth-xxxxxx.oss-cn-shanghai.aliyuncs.com/verify/xxxxx/xxxxx.jpeg",
                // 方式四:已经实人认证通过的CertifyId。
                // SourceCertifyId = "0bfa7c493f850e5178b9f8613634c9xx",

                // 请在以下四种传入底库人脸照片方式中,选择一种
                // 1.照片Base64编码。
                // 2.照片OSS Bucket名和文件名。
                // 3.照片OSS的URL地址。
                // 4.已经实人认证通过的CertifyId。

                // 方式一:照片Base64。
                //TargetFaceContrastPicture = "底库人脸照片Base64编码",
                // 方式二:照片OSS Bucket名和文件名。
                // TargetOssBucketName = "cn-shanghai-aliyun-cloudauth-xxxxx",
                // TargetOssObjectName = "verify/xxxxx/xxxxxx.jpeg",
                // 方式三:照片OSS的URL地址,公网可访问。
                TargetFaceContrastPictureUrl = "https://cn-shanghai-aliyun-cloudauth-xxxxxx.oss-cn-shanghai.aliyuncs.com/verify/xxxxx/xxxxx.jpeg",
                // 方式四:已经实人认证通过的CertifyId。
                // TargetCertifyId = "0bfa7c493f850e5178b9f8613634c9xx",
            };
            AlibabaCloud.SDK.Cloudauth20190307.Models.CompareFaceVerifyResponse response = CompareFaceVerifyAutoRoute(request);
            // 不支持服务自动路由。
            // AlibabaCloud.SDK.Cloudauth20190307.Models.CompareFaceVerifyResponse response = CompareFaceVerify("cloudauth.cn-shanghai.aliyuncs.com", request);
            Console.WriteLine(response.Body.RequestId);
            Console.WriteLine(response.Body.Code);
            Console.WriteLine(response.Body.Message);
            Console.WriteLine(response.Body.ResultObject.Passed);
            Console.WriteLine(response.Body.ResultObject.VerifyScore);
            Console.WriteLine(response.Body.ResultObject.CertifyId);
        }


        public static AlibabaCloud.SDK.Cloudauth20190307.Models.CompareFaceVerifyResponse CompareFaceVerifyAutoRoute(AlibabaCloud.SDK.Cloudauth20190307.Models.CompareFaceVerifyRequest request)
        {
            List<string> endpoints = new List<string>
            {
                "cloudauth.cn-shanghai.aliyuncs.com",
                "cloudauth.cn-beijing.aliyuncs.com"
            };
            AlibabaCloud.SDK.Cloudauth20190307.Models.CompareFaceVerifyResponse lastResponse = null;

            foreach (var endpoint in endpoints)
            {
                try
                {
                    AlibabaCloud.SDK.Cloudauth20190307.Models.CompareFaceVerifyResponse response = CompareFaceVerify(endpoint, request);
                    lastResponse = response;
                    if (response is not null)
                    {
                        if (AlibabaCloud.TeaUtil.Common.EqualNumber(500, (int)(response.StatusCode)))
                        {
                            continue;
                        }

                        if (response.Body is not null)
                        {
                            if (AlibabaCloud.TeaUtil.Common.EqualString("500", response.Body.Code))
                            {
                                continue;
                            }
                        }
                    }
                    return response;
                }
                catch (TeaException err)
                {
                    Console.WriteLine(err);
                    // 网络异常,切换到下个区域调用。
                    if (AlibabaCloud.TeaUtil.Common.EqualString("ServiceUnavailable", err.Code))
                    {
                        continue;
                    }
                }
                catch (Exception _err)
                {
                    Console.WriteLine(_err);
                    continue;
                }
            }
            return lastResponse;
        }

        public static AlibabaCloud.SDK.Cloudauth20190307.Models.CompareFaceVerifyResponse CompareFaceVerify(string endpoint, AlibabaCloud.SDK.Cloudauth20190307.Models.CompareFaceVerifyRequest request)
        {
            AlibabaCloud.SDK.Cloudauth20190307.Client client = CreateClient(endpoint);
            // 创建RuntimeObject实例并设置运行参数。
            AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
            runtime.ReadTimeout = 10000;
            runtime.ConnectTimeout = 10000;
            return client.CompareFaceVerifyWithOptions(request, runtime);
        }
    }
}

Node.js

const Config = require("@alicloud/openapi-client");
const CloudAuth = require("@alicloud/cloudauth20190307");
const CloudAuthClient = CloudAuth.default;
const {RuntimeOptions} = require("@alicloud/tea-util");
const { default: Credential } = require('@alicloud/credentials');
const fs = require("fs");

function createClient(endpoint) {
    // 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
    // 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
	  // 本示例通过阿里云Credentials工具从环境变量中读取AccessKey,来实现API访问的身份验证。
    const cred = new Credential();
    const config = new Config.Config({
    credential: cred,
    // 设置Endpoint。
    endpoint: endpoint,
    // 设置HTTP代理。
    // httpProxy: "http://xxx.xxx.xxx.xxx:9999",
    // 设置HTTPS代理。
    // httpsProxy: "https://username:password@xxx.xxx.xxx.xxx:9999",
  });
    return new CloudAuthClient(config)
}

async function compareFaceVerify(endpoint, request) {
    const client = createClient(endpoint);
    // 创建RuntimeObject实例并设置运行参数。
    const runtime = new RuntimeOptions([]);
    runtime.readTimeout=10000;
    runtime.connectTimeout=10000;
    return await client.compareFaceVerifyWithOptions(request, runtime);
}

async function compareFaceVerifyAutoRoute(request) {
    const endpoints = [
        "cloudauth.cn-shanghai.aliyuncs.com",
        "cloudauth.cn-beijing.aliyuncs.com"
    ];

    for (const endpoint of endpoints) {
        try {
            const response = await compareFaceVerify(endpoint, request);
            if (response.statusCode === 500) {
                continue;
            }
            if(response.body !== null){
                if(response.body.code === "500"){
                    continue;
                }
            }
            return response;
        } catch (err) {
            console.log(err);
            continue;
        }
    }
    return null;
}

async function main(){
    // 通过以下代码创建API请求并设置参数。
    const request = new CloudAuth.CompareFaceVerifyRequest({
        // 请输入场景ID。
        sceneId: xxx,
        // 设置商户请求的唯一标识。
        outerOrderNo: "xxx",
        // 要接入的认证方案。
        productCode: "PV_FC",

        // 方式一:照片Base64。
        // sourceFaceContrastPicture: "人脸照片Base64编码",
        // 方式二:照片OSS bucket名和文件名。
        // sourceOssBucketName: "cn-shanghai-aliyun-cloudauth-xxxxx",
        // sourceOssObjectName: "verify/xxxxx/xxxxxx.jpeg",
        // 方式三:照片OSS的URL地址,公网可访问。
        sourceFaceContrastPictureUrl: "https://cn-shanghai-aliyun-cloudauth-xxxxxx.oss-cn-shanghai.aliyuncs.com/verify/xxxxx/xxxxx.jpeg",
        // 方式四:已经实人认证通过的CertifyId。
        // sourceCertifyId: "0bfa7c493f850e5178b9f8613634c9xx",

        // 请在以下四种传入底库人脸照片方式中,选择一种
        // 1.照片Base64编码。
        // 2.照片OSS bucket名和文件名。
        // 3.照片OSS的URL地址。
        // 4.已经实人认证通过的CertifyId。

        // 方式一:照片Base64。
        // targetFaceContrastPicture: "人脸照片Base64编码",
        // 方式二:照片OSS bucket名和文件名。
        // targetOssBucketName: "cn-shanghai-aliyun-cloudauth-xxxxx",
        // targetOssObjectName: "verify/xxxxx/xxxxxx.jpeg",
        // 方式三:照片OSS的URL地址,公网可访问。
        targetFaceContrastPictureUrl: "https://cn-shanghai-aliyun-cloudauth-xxxxxx.oss-cn-shanghai.aliyuncs.com/verify/xxxxx/xxxxx.jpeg",
        // 方式四:已经实人认证通过的CertifyId。
        // targetCertifyId: "0bfa7c493f850e5178b9f8613634c9xx"
    });

    // 推荐,支持服务路由。
    const response = await compareFaceVerifyAutoRoute(request);
    // 不支持服务自动路由。
    // const response = await compareFaceVerify("cloudauth.cn-shanghai.aliyuncs.com", request);
    if (response){
    console.log(response.body.requestId);
    console.log(response.body.code);
    console.log(response.body.message);
    console.log(response.body.resultObject.verifyScore);
    console.log(response.body.resultObject.passed);
}
}

main().then(function (response) {});

  • 本页导读
文档反馈