文档

AIGCFaceVerify

更新时间:

随着生成式人工智能的快速发展,互联网上存在许多用户利用文生成图、图生成图等技术生成了人脸图片。这些人脸图片难以肉眼区分,给某些客户业务场景的安全运营带来了挑战。其次,基于《生成式人工智能服务管理暂行办法》的合规要求,平台方需要标识出AIGC内容。基于这一背景,金融级实人认证推出AIGC人脸检测功能,以协助客户更好地识别生成式人脸图片。

说明

目前该接口用于识别利用AIGC技术生成的人脸图片。如果您的业务场景侧重于人脸伪造对抗,建议您集成活体检测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

请求方法

支持HTTPS POST或GET方式发送请求。

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

AIGCFaceVerify接口说明

通过传入人脸图片,识别图片中人脸是否为AIGC生成内容。

传入图片要求

  • 建议图像质量达到QF75或以上,图像尺寸至少为480P。若图片的大小和质量不符合要求,可能会影响检测结果。

  • 支持JPEG、PNG、TIFF、HEIC、AVIF、BMP、WebP、RAW等格式的静态图像,动态图像支持LIVP、MOV格式。

请求参数

名称

类型

是否必选

描述

示例值

SceneId

Long

认证场景ID。该ID在控制台创建认证场景后自动生成。关于如何创建认证场景,请参见添加认证场景

100000****

OuterOrderNo

String

客户服务端自定义的业务唯一标识,用于后续定位和排查问题。取值最长为32位长度的字母数字组合,请确保唯一。

e0c34a77f5ac40a5aa5e6ed20c353888

ProductCode

String

固定值:LR_FR_AIGC。

LR_FR_AIGC

FaceContrastPicture

String

金融级活体检测方案纯服务端接入提供以下三种传入人脸照片的方式,请您选择其中一种。

  • FaceContrastPicture

  • FaceContrastPictureUrl

  • OSS:OssBucketName、OssObjectName

照片Base64编码。如果您选择FaceContrastPicture(照片Base64编码)方式传入人脸照片,请注意检查照片大小,不要传入过大的照片。

说明

如果您需要上传较大的人脸照片,请选择OSS方式。

/9j/4AAQSkZJRgABAQAASxxxxxxx

FaceContrastPictureUrl

String

人像地址,公网可访问的HTTP、HTTPS链接。

https://cn-shanghai-aliyun-cloudauth-xxxxxx.oss-cn-shanghai.aliyuncs.com/verify/xxxxx/xxxxx.jpeg

OssBucketName

String

已授权OSS空间的文件名。如果您选择OSS方式传入人脸照片,您必须传入OssBucketName和OssObjectName参数。OSS请求参数格式仅支持开通实人认证服务时授权的OSS生成的URL、Bucket和文件名。

cn-shanghai-aliyun-cloudauth-xxxxx

OssObjectName

String

verify/xxxxx/xxxxxx.jpeg

返回数据

名称

类型

描述

示例值

HTTP Body

RequestId

String

请求ID。

130A2C10-B9EE-4D84-88E3-5384FF039795

Code

String

返回码。关于返回码的具体信息,请参见返回Code和Message说明。

200

Message

String

请求消息的响应信息。

success

ResultObject.Result

String

认证结果。

  • T:疑似AIGC生成人脸。

  • F:未检出。

T

ResultObject.Score

String

认证分数。

0.0011

ResultObject.CertifyId

String

认证ID。

shafadeb69ec1a4710f8b1dd7f8951f2

说明

当请求过程中出现错误时,例如参数无效,则不会返回CertifyId。

返回Code和Message说明

Code

Message

描述

200

success

成功。

400

参数不能为空

参数不能为空。

401

参数非法

非法参数。传入的姓名、身份证号码长度必须符合国家标准且不得包含英文字母等特殊字符。

402

应用配置不存在

应用配置不存在。

404

认证场景配置不存在

认证场景配置不存在,请先在控制台上创建认证场景。

410

未开通服务

未开通OSS产品或未完成OSS读写授权,请登录金融级实人认证控制台完成授权。具体操作,请参见授权金融级实人认证访问OSS存储空间

411

RAM无权限

需要给RAM账号授予AliyunAntCloudAuthFullAccess的操作权限。

412

欠费中

金融级实人认证或OSS存在欠费,请充值后操作。

414

设备类型不支持

当前移动设备不支持刷脸认证,请更换设备后操作。

415

SDK版本不支持

当前认证SDK版本不支持刷脸认证,请升级SDK后操作。

416

系统版本不支持

当前操作系统版本不支持刷脸认证,请升级系统或更换设备操作。

417

无法使用刷脸服务

自定义比对源的图片人脸特征提取失败,建议更换图片上传。

418

刷脸失败次数过多

当天刷脸认证次数过多,请明天再试。

419

传入图片不可用

图片无法下载、图片内容为空或图片分辨率不符合要求。

420

数据重复

图片传入方式超过了一种。支持以下三种传入人脸照片的方式,必须且只能使用其中一种:

  • FaceContrastPicture

  • FaceContrastPictureUrl

  • OSSOssBucketName、OssObjectName

421

传入图片过大

图片超过了1 MB,建议压缩图片或更换图片上传方式。

422

下载图片超时

图片下载超过了3秒,请排查网络后重新操作。

423

状态错误

传入的CertifyId认证状态需要为T(认证通过),您也可以更换其他方式传入图片。

500

系统错误

系统内部错误,请反馈工程师排查。

SDK调用示例

说明

在基于阿里云OpenAPI进行二次开发前,您可以通过OpenAPI门户提供的网页或命令行方式,预先验证OpenAPI请求方式,入参和查看OpenAPI的返回结果。当调用出错时,OpenAPI 门户会提示您如何解决,帮助您快速了解OpenAPI功能及使用方法。

AIGCFaceVerify接口调试入口

Java SDK调用示例

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

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

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

  4. 集成SDK并编辑写代码(以Java语言为例,要求JDK 1.8及以上版本)。

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

      • Java SDK依赖

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

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

        本示例通过阿里云Credentials工具从环境变量中读取AccessKey,来实现API访问的身份验证。您需要提前在系统配置环境变量,具体操作,请参见身份验证配置

    2. 接口调用示例(Java语言)。

    3. import com.aliyun.cloudauth20190307.Client;
      import com.aliyun.cloudauth20190307.models.AIGCFaceVerifyRequest;
      import com.aliyun.cloudauth20190307.models.AIGCFaceVerifyResponse;
      import com.aliyun.teaopenapi.models.Config;
      import com.aliyun.teautil.models.RuntimeOptions;
      
      import java.util.Arrays;
      import java.util.List;
      
      public class AIGCFaceVerify {
          public static void main(String[] args) throws Exception {
      
              // 通过以下代码创建API请求并设置参数。
              AIGCFaceVerifyRequest request = new AIGCFaceVerifyRequest();
              // 请输入场景ID+L。
              request.setSceneId(10000xxxxL);
              request.setOuterOrderNo("xxx");
              request.setProductCode("LR_FR_AIGC");
              // 请在以下方式中选择一种,传入人脸图片。
              // 方式一:人脸图片Base64。
              request.setFaceContrastPicture("人脸图片Base64编码");
              // 方式二:人脸图片OSS bucket名和文件名。
              //request.setOssBucketName("cn-shanghai-aliyun-cloudauth-xxxxx");
              //request.setOssObjectName("verify/xxxxx/xxxxxx.jpeg");
              // 方式三:人脸图片的OSS URL地址。该地址必须公网可访问。
              //request.setFaceContrastPictureUrl("https://cn-shanghai-aliyun-cloudauth-xxxxxx.oss-cn-shanghai.aliyuncs.com/verify/xxxxx/xxxxx.jpeg");
      
              // 推荐,支持服务路由。
              AIGCFaceVerifyResponse response = aigcFaceVerifyAutoRoute(request);
      
              // 不支持服务自动路由。
              //AIGCFaceVerifyResponse response = aigcFaceVerify("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().getResult());
              System.out.println(response.getBody().getResultObject() == null ? null
                      : response.getBody().getResultObject().getScore());
              System.out.println(response.getBody().getResultObject() == null ? null
                      : response.getBody().getResultObject().getCertifyId());
          }
      
          private static AIGCFaceVerifyResponse aigcFaceVerifyAutoRoute(AIGCFaceVerifyRequest request) {
              // 第一个为主区域Endpoint,第二个为备区域Endpoint。
              List<String> endpoints = Arrays.asList("cloudauth.cn-shanghai.aliyuncs.com", "cloudauth.cn-beijing.aliyuncs.com");
              AIGCFaceVerifyResponse lastResponse = null;
              for (int i=0; i<endpoints.size(); i++) {
                  try {
                      AIGCFaceVerifyResponse response = aigcFaceVerify(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 AIGCFaceVerifyResponse aigcFaceVerify(String endpoint, AIGCFaceVerifyRequest request)
                  throws Exception {
              // 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
              // 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
              // 本示例通过阿里云Credentials工具从环境变量中读取AccessKey,来实现API访问的身份验证。
              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.aIGCFaceVerifyWithOptions(request, runtime);
          }
      }

其他语言SDK调用示例

<?php


namespace AlibabaCloud\SDK\Sample\Verify\LRFR;

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

class AIGCFaceVerify
{
    /**
     * 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访问的身份验证。
        $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);
    }

    /**
     * @return void
     */
    public static function main(){
        $request = new AIGCFaceVerifyRequest([
            // 请输入场景ID。
            "sceneId" => 0,
            "outerOrderNo" => "<xxx>",
            // 要接入的认证方案,固定值:LR_FR_AIGC。
            "productCode" => "<LR_FR_AIGC>",
            // 请在以下方式中选择一种,传入人脸图片。
            // 方式一:人脸图片Base64。
            // "faceContrastPicture" => "<人脸图片Base64编码>",
            // 方式二:人脸图片OSS Bucket名和文件名。
            // "ossBucketName" => "<cn-shanghai-aliyun-cloudauth-xxxxx>",
            // "ossObjectName" => "<verify/xxxxx/xxxxxx.jpeg>",
            // 方式三:人脸图片的OSS URL地址。该地址必须公网可访问。
            "faceContrastPictureUrl" => "<https://cn-shanghai-aliyun-cloudauth-xxxxxx.oss-cn-shanghai.aliyuncs.com/verify/xxxxx/xxxxx.jpeg>"
        ]);
        // 推荐,支持服务路由。
        $response = self::aigcFaceVerifyAutoRoute($request);
        // 不支持服务自动路由。
        // $response = self::aigcFaceVerify("cloudauth.cn-shanghai.aliyuncs.com", $request);
        var_dump($response->body->requestId);
        var_dump($response->body->code);
        var_dump($response->body->message);
        var_dump($response->body->resultObject->result);
        var_dump($response->body->resultObject->score);
        var_dump($response->body->resultObject->certifyId);
    }

    /**
     * aigcFaceVerifyAutoRoute
     * @param AIGCFaceVerifyRequest $request
     * @return AIGCFaceVerifyResponse|null
     */
    public static function aigcFaceVerifyAutoRoute(AIGCFaceVerifyRequest $request): ?AIGCFaceVerifyResponse
    {
        $endpoints = [
            "cloudauth.cn-shanghai.aliyuncs.com",
            "cloudauth.cn-beijing.aliyuncs.com"
        ];
        foreach($endpoints as $endpoint){
            try {
                $response = self::aigcFaceVerify($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;
    }

    /**
     * aigcFaceVerify
     * @param string $endpoint
     * @param AIGCFaceVerifyRequest $request
     * @return AIGCFaceVerifyResponse
     */
    public static function aigcFaceVerify(string $endpoint, AIGCFaceVerifyRequest $request): AIGCFaceVerifyResponse
    {
        $client = self::createClient($endpoint);
        // 创建RuntimeObject实例并设置运行参数。
        $runtime = new RuntimeOptions([]);
        $runtime->readTimeout = 10000;
        $runtime->connectTimeout = 10000;
        return $client->aIGCFaceVerifyWithOptions($request, $runtime);
    }
}
$path = __DIR__ . \DIRECTORY_SEPARATOR . \DIRECTORY_SEPARATOR . 'vendor' . \DIRECTORY_SEPARATOR . 'autoload.php';
if (file_exists($path)) {
    require_once $path;
}
AIGCFaceVerify::main();
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 AIGCFaceVerify:
    def __init__(self):
        pass

    @staticmethod
    def create_client(
            endpoint: str,
    ) -> CloudauthClient:
        # 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
        # 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
        # 本示例通过阿里云Credentials工具从环境变量中读取AccessKey,来实现API访问的身份验证。
        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.AIGCFaceVerifyRequest(
            # 请输入场景ID。
            scene_id=0,
            outer_order_no='xxx',
            # 固定值。
            product_code='LR_FR_AIGC',

            # 方式一:照片Base64。
            # face_contrast_picture='人脸照片Base64编码'
            # 方式二:照片OSS Bucket名和文件名。
            # oss_bucket_name='cn-shanghai-aliyun-cloudauth-xxxxx',
            # oss_object_name='verify/xxxxx/xxxxxx.jpeg',
            # 方式三:照片OSS的URL地址,公网可访问。
            face_contrast_picture_url='https://cn-shanghai-aliyun-cloudauth-xxxxxx.oss-cn-shanghai.aliyuncs.com/verify/xxxxx/xxxxx.jpeg'
        )
        response = AIGCFaceVerify.aigc_face_verif_auto_route(request)
        # 不支持服务自动路由。
        # response = AIGCFaceVerify.aigc_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.result)
        print(response.body.result_object.score)
        print(response.body.result_object.certify_id)

    @staticmethod
    def aigc_face_verif_auto_route(
            request: cloudauth_models.AIGCFaceVerifyRequest,
    ) -> cloudauth_models.AIGCFaceVerifyResponse:
        endpoints = [
            'cloudauth.cn-shanghai.aliyuncs.com',
            'cloudauth.cn-beijing.aliyuncs.com'
        ]
        for endpoint in endpoints:
            try:
                response = AIGCFaceVerify.aigc_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 aigc_face_verify(
            endpoint: str,
            request: cloudauth_models.AIGCFaceVerifyRequest,
    ) -> cloudauth_models.AIGCFaceVerifyResponse:
        client = AIGCFaceVerify.create_client(endpoint)
        # 创建RuntimeObject实例并设置运行参数。
        runtime = util_models.RuntimeOptions()
        runtime.read_timeout = 10000
        runtime.connect_timeout = 10000
        return client.a_igcface_verify_with_options(request, runtime)


if __name__ == '__main__':
    AIGCFaceVerify.main()
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.AIGCFaceVerifyRequest{
		// 固定值。
		ProductCode: tea.String("LR_FR_AIGC"),
		// 请输入场景ID。
		SceneId: tea.Int64(xxxx),
		OuterOrderNo: tea.String("xxx"),

		// 方式一:照片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 := AIGCFaceVerifyAutoRoute(request)

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

	return _err
}

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

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

using System.Collections.Generic;
using Tea;

namespace AIGCFaceVerify
{
    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.AIGCFaceVerifyRequest request = new AlibabaCloud.SDK.Cloudauth20190307.Models.AIGCFaceVerifyRequest
            {
                // 固定值。
                ProductCode = "LR_FR_AIGC",
                // 请输入场景ID。
                SceneId = xxx,
                OuterOrderNo = "xxx",

                // 方式一:照片Base64。
                //FaceContrastPicture = "人脸照片Base64编码",
                // 方式二:照片OSS Bucket名和文件名。
                // OssBucketName = "cn-shanghai-aliyun-cloudauth-xxxxx",
                // OssObjectName = "verify/xxxxx/xxxxxx.jpeg",
                // 方式三:照片OSS的URL地址,公网可访问。
                FaceContrastPictureUrl = "https://cn-shanghai-aliyun-cloudauth-xxxxxx.oss-cn-shanghai.aliyuncs.com/verify/xxxxx/xxxxx.jpeg",
            };
            AlibabaCloud.SDK.Cloudauth20190307.Models.AIGCFaceVerifyResponse response = AigcFaceVerifyAutoRoute(request);
            // 不支持服务自动路由。
            // AlibabaCloud.SDK.Cloudauth20190307.Models.AIGCFaceVerifyResponse response = AigcFaceVerify("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.Result);
            Console.WriteLine(response.Body.ResultObject.Score);
            Console.WriteLine(response.Body.ResultObject.CertifyId);
        }


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

            foreach (var endpoint in endpoints)
            {
                try
                {
                    AlibabaCloud.SDK.Cloudauth20190307.Models.AIGCFaceVerifyResponse response = AigcFaceVerify(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.AIGCFaceVerifyResponse AigcFaceVerify(string endpoint, AlibabaCloud.SDK.Cloudauth20190307.Models.AIGCFaceVerifyRequest 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.AIGCFaceVerifyWithOptions(request, runtime);
        }
    }
}
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 aigcFaceVerify(endpoint, request) {
    const client = createClient(endpoint);
    // 创建RuntimeObject实例并设置运行参数。
    const runtime = new RuntimeOptions([]);
    runtime.readTimeout=10000;
    runtime.connectTimeout=10000;
    return await client.aIGCFaceVerifyWithOptions(request, runtime);
}

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

    for (const endpoint of endpoints) {
        try {
            const response = await aigcFaceVerify(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.AIGCFaceVerifyRequest({
        // 请输入场景ID。
        sceneId: xxx,
        // 设置商户请求的唯一标识。
        outerOrderNo: "xxx",
        // 要接入的认证方案。
        productCode: "LR_FR_AIGC",
      
        // 请在以下方式中选择一种,传入人脸图片。
        // 方式一:人脸图片Base64。
        // faceContrastPicture: "人脸图片Base64编码",
        // 方式二:人脸图片OSS bucket名和文件名。
        // ossBucketName: "cn-shanghai-aliyun-cloudauth-xxxxx",
        // ossObjectName: "verify/xxxxx/xxxxxx.jpeg",
        // 方式三:人脸图片的OSS URL地址。该地址必须公网可访问。
        faceContrastPictureUrl: "https://cn-shanghai-aliyun-cloudauth-xxxxxx.oss-cn-shanghai.aliyuncs.com/verify/xxxxx/xxxxx.jpeg"
    });

    // 推荐,支持服务路由。
    const response = await aigcFaceVerifyAutoRoute(request);
    // 不支持服务自动路由。
    // const response = await aigcFaceVerify("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.certifyId);
    console.log(response.body.resultObject.result);
    console.log(response.body.resultObject.score);
}
}
main().then(function (response) {});

  • 本页导读