SDK code examples
This document provides a sample workflow for integrating the financial-grade real-person authentication solution with your app by using the SDK to call the server-side OpenAPI.
Server-side OpenAPI
InitFaceVerify - Initiate a verification request: Call this API before starting each verification to obtain a CertifyId, which links all API calls within the same verification session.
DescribeFaceVerify - Retrieve verification results: After receiving a callback notification from the client SDK, call this API on the server-side to get the verification status and verification data.
Step 1: Enable the service
To use the Financial-grade Identity Verification Service, you must first enable it. For instructions, see Enable Financial-grade Identity Verification Service.
Step 2: Create and authorize a RAM user
For fine-grained service access management, create a RAM user before you integrate the SDK. Grant the RAM user access to your cloud resources to call service interfaces and obtain OpenAPI access credentials. For instructions on creating a RAM user, granting permissions, and generating an AccessKey, see Authorize a RAM user to access the service.
Step 3: Add an authentication scenario
An authentication scenario defines a specific use case, such as login or payment, where your users complete Real Person Verification using the Financial-grade Real Person Verification service. You can add one or more scenarios and configure different authentication solutions for each. When you call the InitFaceVerify operation to initiate an authentication request, you must pass the authentication scenario ID. To add an authentication scenario and obtain its ID, see Add an Authentication Scenario.
When you add an authentication scenario, you can authorize Alibaba Cloud to access a specified OSS bucket to store verification images. For instructions, see Enable and Authorize OSS Storage.
Step 4: Integrate the SDK
Service endpoints
The following table lists the supported regions and their endpoints.
We recommend configuring primary and secondary endpoints using the code samples in this topic. This enables automatic failover to the secondary endpoint if the primary endpoint fails, ensuring continuous availability for your system.
Region | Service address | VPC address | Global access address |
China (Shanghai) | IPv4: cloudauth.cn-shanghai.aliyuncs.com | cloudauth-vpc.cn-shanghai.aliyuncs.com |
|
IPv6: cloudauth-dualstack.aliyuncs.com | |||
China (Beijing) | IPv4: cloudauth.cn-beijing.aliyuncs.com | cloudauth-vpc.cn-beijing.aliyuncs.com | |
IPv6: cloudauth-dualstack.cn-beijing.aliyuncs.com |
SDK installation and download
Choose an SDK based on your business needs and technology stack.
Language | SDK download | Source code |
Java | ||
Python | ||
TypeScript | ||
Go | ||
PHP | ||
C# | ||
C++ |
AccessKey in environment variables
Before you begin, ensure you have an AccessKey and have configured the environment variables:
Write code
The following example uses Java.
Add the following dependency to your pom.xml file to use the SDK in your Maven project.
The following is the dependency for the Java SDK, which uses the latest version. We recommend that you pin the version number after testing for stability. For SDK versions and examples, see Latest dependency version.
Before calling the API, you must set the AccessKey in an environment variable. For instructions on how to configure environment variables, see Configure environment variables on Linux, macOS, and Windows.
<dependency> <groupId>com.aliyun</groupId> <artifactId>cloudauth20190307</artifactId> <!--We recommend that you pin the version number after testing for stability.--> <version>LATEST</version> </dependency>
Sample code
ImportantThe code examples demonstrate basic API calls and are for illustration only. For production use, optimize and refactor the code to meet your business requirements.
For example, to improve performance, we recommend implementing the singleton pattern for generic objects such as credentialClient, config, and client. The code examples include comments recommending this practice.
InitFaceVerify API call example
import java.util.Arrays; import java.util.List; import com.aliyun.cloudauth20190307.Client; import com.aliyun.cloudauth20190307.models.*; import com.aliyun.teaopenapi.models.Config; import com.aliyun.teautil.models.RuntimeOptions; public class InitFaceVerify { // Use the singleton pattern to improve performance. private static com.aliyun.credentials.Client credentialClient = new com.aliyun.credentials.Client(); public static void main(String[] args) throws Exception { InitFaceVerifyRequest request = new InitFaceVerifyRequest(); // Specify the SceneId. The 'L' suffix specifies a Long data type. request.setSceneId(0L); // Set a unique identifier for the merchant's request. request.setOuterOrderNo("xxxx"); // Authentication solution. request.setProductCode("ID_PRO"); // Mode. request.setModel("LIVENESS"); request.setCertType("IDENTITY_CARD"); request.setCertName("Mr. Zhang"); request.setCertNo("xxxx"); // MetaInfo environment parameter. request.setMetaInfo("{}"); //request.setMobile("130xxxxxxxx"); //request.setIp("114.xxx.xxx.xxx"); //request.setUserId("12345xxxx"); //request.setCallbackUrl("https://www.aliyundoc.com"); //request.setCallbackToken("xxxxx"); // To enable encrypted transmission of personal information, uncomment the following lines. //request.setEncryptType("SM2"); //request.setCertName("BCRD/7ZkNy7Q*****M1BMBezZe8GaYHrLwyJv558w=="); //request.setCertNo("BMjsstxK3S4b1YH*****Pet8ECObfxmLN92SLsNg=="); // Recommended. This method supports service routing. InitFaceVerifyResponse response = initFaceVerifyAutoRoute(request); // This method does not support automatic service routing. //InitFaceVerifyResponse response = initFaceVerify("cloudauth.cn-shanghai.aliyuncs.com", request); response.getBody().getRequestId(); response.getBody().getResultObject().getCertifyId(); 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().getCertifyId()); } private static InitFaceVerifyResponse initFaceVerifyAutoRoute(InitFaceVerifyRequest request) { // The first endpoint is for the primary region, and the second is for the secondary region. List<String> endpoints = Arrays.asList("cloudauth.cn-shanghai.aliyuncs.com", "cloudauth.cn-beijing.aliyuncs.com"); InitFaceVerifyResponse lastResponse = null; for (int i=0; i<endpoints.size(); i++) { try { InitFaceVerifyResponse response = initFaceVerify(endpoints.get(i), request); lastResponse = response; // If a server-side error occurs, switch to the next region. if(response != null){ if(500 == response.getStatusCode()){ continue; } if(response.getBody() != null){ if("500".equals(response.getBody().getCode())){ continue; } } } // Return the response on a successful call. return lastResponse; }catch (Exception e) { e.printStackTrace(); if(i == endpoints.size()-1){ throw new RuntimeException(e); } } } return lastResponse; } private static InitFaceVerifyResponse initFaceVerify(String endpoint, InitFaceVerifyRequest request) throws Exception { // The AccessKey of an Alibaba Cloud account grants permissions for all APIs. For API access and daily operations, use a RAM user. // Do not hardcode the AccessKey ID and AccessKey Secret in your code. This can lead to credential leaks and compromise the security of your resources. // This example reads the AccessKey from environment variables by using the Alibaba Cloud Credentials tool for authentication. For more information about how to configure environment variables, see https://help.aliyun.com/document_detail/378657.html. // We recommend that you use the singleton pattern. Config config = new Config(); config.setCredential(credentialClient); config.setEndpoint(endpoint); // Set an http proxy. //config.setHttpProxy("http://xx.xx.xx.xx:xxxx"); // Set an https proxy. //config.setHttpsProxy("https://xx.xx.xx.xx:xxxx"); // We recommend that you use the singleton pattern. Client client = new Client(config); // Create a RuntimeOptions instance and set runtime options. RuntimeOptions runtime = new RuntimeOptions(); runtime.readTimeout = 10000; runtime.connectTimeout = 10000; return client.initFaceVerifyWithOptions(request, runtime); } }DescribeFaceVerify API call example
import java.util.Arrays; import java.util.List; import com.aliyun.cloudauth20190307.Client; import com.aliyun.cloudauth20190307.models.DescribeFaceVerifyRequest; import com.aliyun.cloudauth20190307.models.DescribeFaceVerifyResponse; import com.aliyun.teaopenapi.models.Config; import com.aliyun.teautil.models.RuntimeOptions; public class DescribeFaceVerify { // Use the singleton pattern to improve performance. private static com.aliyun.credentials.Client credentialClient = new com.aliyun.credentials.Client(); public static void main(String[] args) throws Exception { // Create and configure the API request. DescribeFaceVerifyRequest request = new DescribeFaceVerifyRequest(); // Specify the SceneId. The 'L' suffix specifies a Long data type. request.setSceneId(0L); request.setCertifyId("xxxx"); // Recommended. This method supports service routing. DescribeFaceVerifyResponse response = describeFaceVerifyAutoRoute(request); // This method does not support automatic service routing. //DescribeFaceVerifyResponse response = describeFaceVerify("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().getSubCode()); System.out.println( response.getBody().getResultObject() == null ? null : response.getBody().getResultObject().getIdentityInfo()); System.out.println( response.getBody().getResultObject() == null ? null : response.getBody().getResultObject().getDeviceToken()); System.out.println( response.getBody().getResultObject() == null ? null : response.getBody().getResultObject().getMaterialInfo()); } private static DescribeFaceVerifyResponse describeFaceVerifyAutoRoute(DescribeFaceVerifyRequest request) { // The first endpoint is for the primary region, and the second is for the secondary region. List<String> endpoints = Arrays.asList("cloudauth.cn-shanghai.aliyuncs.com", "cloudauth.cn-beijing.aliyuncs.com"); DescribeFaceVerifyResponse lastResponse = null; for (int i = 0; i < endpoints.size(); i++) { try { DescribeFaceVerifyResponse response = describeFaceVerify(endpoints.get(i), request); lastResponse = response; // If a server-side error occurs, switch to the next region. if (response != null) { if (500 == response.getStatusCode()) { continue; } if (response.getBody() != null) { if ("500".equals(response.getBody().getCode())) { continue; } } } return lastResponse; } catch (Exception e) { if (i == endpoints.size() - 1) { throw new RuntimeException(e); } } } return lastResponse; } private static DescribeFaceVerifyResponse describeFaceVerify(String endpoint, DescribeFaceVerifyRequest request) throws Exception { // The AccessKey of an Alibaba Cloud account grants permissions for all APIs. For API access and daily operations, use a RAM user. // Do not hardcode the AccessKey ID and AccessKey Secret in your code. This can lead to credential leaks and compromise the security of your resources. // This example reads the AccessKey from environment variables by using the Alibaba Cloud Credentials tool for authentication. For more information about how to configure environment variables, see https://help.aliyun.com/document_detail/378657.html. // We recommend that you use the singleton pattern. Config config = new Config(); config.setCredential(credentialClient); config.setEndpoint(endpoint); // Set an http proxy. //config.setHttpProxy("http://xx.xx.xx.xx:xxxx"); // Set an https proxy. //config.setHttpsProxy("https://xx.xx.xx.xx:xxxx"); // We recommend that you use the singleton pattern. Client client = new Client(config); // Create a RuntimeOptions instance and set runtime options. RuntimeOptions runtime = new RuntimeOptions(); runtime.readTimeout = 10000; runtime.connectTimeout = 10000; return client.describeFaceVerifyWithOptions(request, runtime); } }
Other language examples
PHP
InitFaceVerify API call example
<?php
namespace AlibabaCloud\SDK\Sample\Verify\Id;
use AlibabaCloud\Credentials\Credential;
use AlibabaCloud\SDK\Cloudauth\V20190307\Cloudauth;
use AlibabaCloud\SDK\Cloudauth\V20190307\Models\InitFaceVerifyRequest;
use AlibabaCloud\SDK\Cloudauth\V20190307\Models\InitFaceVerifyResponse;
use AlibabaCloud\Tea\Utils\Utils;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
use Exception;
use Darabonba\OpenApi\Models\Config;
class InitFaceVerify
{
/**
* createClient
* @param string $endpoint
* @return Cloudauth
*/
public static function createClient(string $endpoint): Cloudauth
{
// An AccessKey of an Alibaba Cloud account has permissions for all APIs. We recommend that you use a RAM user for API access and daily operations.
// We strongly recommend that you do not store your AccessKey ID and AccessKey Secret in your project's code. This could lead to a compromise of your AccessKeys, threatening the security of all resources in your account.
// This example shows how to use the Alibaba Cloud Credentials tool to read AccessKey credentials from an environment variable for authentication.
$credential = new Credential([]);
$config = new Config([
// Specify the credential object.
"credential" => $credential,
// Configure the HTTP proxy.
// "httpProxy" => "<http://xx.xx.xx.xx:xxxx>",
// Configure the HTTPS proxy.
// "httpsProxy" => "<https://xx.xx.xx.xx:xxxx>",
"endpoint" => $endpoint
]);
return new Cloudauth($config);
}
/**
* main
* @return void
* @throws Exception
*/
public static function main()
{
$request = new InitFaceVerifyRequest([
// Specify the scene ID.
"sceneId" => 0,
"outerOrderNo" => "<your-unique-request-id>",
// The authentication solution.
"productCode" => "ID_PRO",
// The type of liveness detection to perform.
"model" => "LIVENESS",
"certType" => "IDENTITY_CARD",
"certName" => "<John Doe>",
"certNo" => "<your-cert-no>",
// The MetaInfo parameter. You must obtain this value from the client SDK.
"metaInfo" => '{"zimVer":"3.0.0","appVersion": "1","bioMetaInfo": "4.1.0:11501568,0","appName": "com.aliyun.antcloudauth","deviceType": "ios","osVersion": "iOS 10.3.2","apdidToken": "","deviceModel": "iPhone9,1"}',
// "mobile" => "<1300000****>",
// "ip" => "<114.xxx.xxx.xxx>",
// "userId" => "<12345xxxx>",
// "callbackUrl" => "<https://www.aliyundoc.com>",
// "callbackToken" => "<xxxxxxx>",
// Set this parameter to enable encrypted transmission of personal information.
// "encryptType" => "SM2",
// "certName" => "BCRD/7ZkNy7Q*****M1BMBezZe8GaYHrLwyJv558w==",
// "certNo" => "BMjsstxK3S4b1YH*****Pet8ECObfxmLN92SLsNg=="
]);
// Recommended. This method supports service routing.
$response = self::initFaceVerifyAutoRoute($request);
// Service routing is not supported.
// $response = self::initFaceVerify("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->certifyId);
}
/**
* initFaceVerifyAutoRoute
* @param InitFaceVerifyRequest $request
* @return InitFaceVerifyResponse|null
*/
public static function initFaceVerifyAutoRoute(InitFaceVerifyRequest $request): ?InitFaceVerifyResponse
{
$endpoints = [
"cloudauth.cn-shanghai.aliyuncs.com",
"cloudauth.cn-beijing.aliyuncs.com"
];
foreach ($endpoints as $endpoint) {
try {
$response = self::initFaceVerify($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;
}
/**
* initFaceVerify
* @param string $endpoint
* @param InitFaceVerifyRequest $request
* @return InitFaceVerifyResponse
*/
public static function initFaceVerify(string $endpoint, InitFaceVerifyRequest $request): InitFaceVerifyResponse
{
$client = self::createClient($endpoint);
// Create a RuntimeOptions instance and set runtime options.
$runtime = new RuntimeOptions([]);
$runtime->readTimeout = 10000;
$runtime->connectTimeout = 10000;
return $client->initFaceVerifyWithOptions($request, $runtime);
}
}
$path = __DIR__ . \DIRECTORY_SEPARATOR . \DIRECTORY_SEPARATOR . 'vendor' . \DIRECTORY_SEPARATOR . 'autoload.php';
if (file_exists($path)) {
require_once $path;
}
InitFaceVerify::main();DescribeFaceVerify API call example
<?php
namespace AlibabaCloud\SDK\Sample\Verify\Id;
use AlibabaCloud\Credentials\Credential;
use AlibabaCloud\SDK\Cloudauth\V20190307\Cloudauth;
use AlibabaCloud\SDK\Cloudauth\V20190307\Models\DescribeFaceVerifyRequest;
use AlibabaCloud\SDK\Cloudauth\V20190307\Models\DescribeFaceVerifyResponse;
use AlibabaCloud\Tea\Utils\Utils;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
use \Exception;
use Darabonba\OpenApi\Models\Config;
class DescribeFaceVerify {
/**
* createClient
* @param string $endpoint
* @return Cloudauth
*/
public static function createClient(string $endpoint): Cloudauth
{
// An AccessKey of an Alibaba Cloud account has permissions for all APIs. We recommend that you use a RAM user for API access and daily operations.
// We strongly recommend that you do not store your AccessKey ID and AccessKey Secret in your project's code. This could lead to a compromise of your AccessKeys, threatening the security of all resources in your account.
// This example shows how to use the Alibaba Cloud Credentials tool to read AccessKey credentials from an environment variable for authentication.
$credential = new Credential([]);
$config = new Config([
// Specify the credential object.
"credential" => $credential,
// Configure the HTTP proxy.
// "httpProxy" => "<http://xx.xx.xx.xx:xxxx>",
// Configure the HTTPS proxy.
// "httpsProxy" => "<https://xx.xx.xx.xx:xxxx>",
"endpoint" => $endpoint
]);
return new Cloudauth($config);
}
/**
* main
* @return void
*/
public static function main(){
$request = new DescribeFaceVerifyRequest();
// Specify the scene ID.
$request->sceneId=0;
// Specify the certification ID.
$request->certifyId="<your-certify-id>";
// Recommended. This method supports service routing.
$response = self::describeFaceVerifyAutoRoute($request);
// Service routing is not supported.
// $response = self::describeFaceVerify("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->passed);
var_dump($response->body->resultObject->subCode);
var_dump($response->body->resultObject->materialInfo);
var_dump($response->body->resultObject->identityInfo);
var_dump($response->body->resultObject->deviceToken);
}
/**
* describeFaceVerifyAutoRoute
* @param DescribeFaceVerifyRequest $request
* @return DescribeFaceVerifyResponse|null
*/
public static function describeFaceVerifyAutoRoute(DescribeFaceVerifyRequest $request): ?DescribeFaceVerifyResponse
{
$endpoints = [
"cloudauth.cn-shanghai.aliyuncs.com",
"cloudauth.cn-beijing.aliyuncs.com"
];
foreach($endpoints as $endpoint){
try {
$response = self::describeFaceVerify($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;
}
/**
* describeFaceVerify
* @param string $endpoint
* @param DescribeFaceVerifyRequest $request
* @return DescribeFaceVerifyResponse
*/
public static function describeFaceVerify(string $endpoint, DescribeFaceVerifyRequest $request): DescribeFaceVerifyResponse
{
$client = self::createClient($endpoint);
// Create a RuntimeOptions instance and set runtime options.
$runtime = new RuntimeOptions([]);
$runtime->readTimeout = 10000;
$runtime->connectTimeout = 10000;
return $client->describeFaceVerifyWithOptions($request, $runtime);
}
}
$path = __DIR__ . \DIRECTORY_SEPARATOR . \DIRECTORY_SEPARATOR . 'vendor' . \DIRECTORY_SEPARATOR . 'autoload.php';
if (file_exists($path)) {
require_once $path;
}
DescribeFaceVerify::main();Python
InitFaceVerify API call example
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 InitFaceVerify:
def __init__(self):
pass
@staticmethod
def create_client(
endpoint: str,
) -> CloudauthClient:
# An AccessKey of an Alibaba Cloud account has permissions for all APIs. We recommend that you use a RAM user for API access and daily operations.
# We strongly recommend that you do not store your AccessKey ID and AccessKey Secret in your project's code. This could lead to a compromise of your AccessKeys, threatening the security of all resources in your account.
# This example demonstrates how to use the Alibaba Cloud Credentials tool to read an AccessKey from an environment variable for authentication.
cred=CredClient()
config = open_api_models.Config(
credential=cred,
# Configure the HTTP proxy.
# http_proxy='http://xx.xx.xx.xx:xxxx',
# Configure the HTTPS proxy.
# https_proxy='https://username:password@xxx.xxx.xxx.xxx:9999',
endpoint=endpoint
)
return CloudauthClient(config)
@staticmethod
def main() -> None:
request = cloudauth_models.InitFaceVerifyRequest(
# Specify the scene ID.
scene_id=0,
outer_order_no='',
# The authentication solution.
product_code='ID_PRO',
model='LIVENESS',
# Must be set to `IDENTITY_CARD`.
cert_type='IDENTITY_CARD',
cert_name='John Doe',
cert_no='',
# The MetaInfo parameter. You must obtain this value from the client SDK.
meta_info='{"zimVer":"3.0.0","appVersion": "1","bioMetaInfo": "4.1.0:11501568,0","appName": "com.aliyun.antcloudauth","deviceType": "ios","osVersion": "iOS 10.3.2","apdidToken": "","deviceModel": "iPhone9,1"}',
# mobile='1300000****',
# ip='114.xxx.xxx.xxx',
# user_id='12345xxxx',
# callback_url='https://www.aliyundoc.com',
# callback_token='xxxxxxx',
# Set this parameter to enable encrypted transmission of personal information.
# encrypt_type='SM2',
# cert_name='BCRD/7ZkNy7Q*****M1BMBezZe8GaYHrLwyJv558w==',
# cert_no='BMjsstxK3S4b1YH*****Pet8ECObfxmLN92SLsNg=='
)
response = InitFaceVerify.init_face_verify_auto_route(request)
# Service routing is not supported.
# response = InitFaceVerify.init_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.certify_id)
@staticmethod
def init_face_verify_auto_route(
request: cloudauth_models.InitFaceVerifyRequest,
) -> cloudauth_models.InitFaceVerifyResponse:
endpoints = [
'cloudauth.cn-shanghai.aliyuncs.com',
'cloudauth.cn-beijing.aliyuncs.com'
]
for endpoint in endpoints:
try:
response = InitFaceVerify.init_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:
print(err)
# If a network exception occurs, try the next region.
continue
return None
@staticmethod
def init_face_verify(
endpoint: str,
request: cloudauth_models.InitFaceVerifyRequest,
) -> cloudauth_models.InitFaceVerifyResponse:
client = InitFaceVerify.create_client(endpoint)
# Create a RuntimeOptions instance and set runtime options.
runtime = util_models.RuntimeOptions()
runtime.read_timeout = 10000
runtime.connect_timeout = 10000
return client.init_face_verify_with_options(request, runtime)
if __name__ == '__main__':
InitFaceVerify.main()
DescribeFaceVerify API call example
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 DescribeFaceVerify:
def __init__(self):
pass
@staticmethod
def create_client(
endpoint: str,
) -> CloudauthClient:
# An AccessKey of an Alibaba Cloud account has permissions for all APIs. We recommend that you use a RAM user for API access and daily operations.
# We strongly recommend that you do not store your AccessKey ID and AccessKey Secret in your project's code. This could lead to a compromise of your AccessKeys, threatening the security of all resources in your account.
# This example demonstrates how to use the Alibaba Cloud Credentials tool to read an AccessKey from an environment variable for authentication.
cred=CredClient()
config = open_api_models.Config(
credential=cred,
# Configure the HTTP proxy.
# http_proxy='http://xx.xx.xx.xx:xxxx',
# Configure the HTTPS proxy.
# https_proxy='https://username:password@xxx.xxx.xxx.xxx:9999',
endpoint=endpoint
)
return CloudauthClient(config)
@staticmethod
def main() -> None:
request = cloudauth_models.DescribeFaceVerifyRequest(
# Specify the scene ID.
scene_id=0,
certify_id=''
)
response = DescribeFaceVerify.describe_face_verify_auto_route(request)
# Service routing is not supported.
# response = DescribeFaceVerify.describe_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.sub_code)
print(response.body.result_object.material_info)
@staticmethod
def describe_face_verify_auto_route(
request: cloudauth_models.DescribeFaceVerifyRequest,
) -> cloudauth_models.DescribeFaceVerifyResponse:
endpoints = [
'cloudauth.cn-shanghai.aliyuncs.com',
'cloudauth.cn-beijing.aliyuncs.com'
]
for endpoint in endpoints:
try:
response = DescribeFaceVerify.describe_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:
print(err)
continue
return None
@staticmethod
def describe_face_verify(
endpoint: str,
request: cloudauth_models.DescribeFaceVerifyRequest,
) -> cloudauth_models.DescribeFaceVerifyResponse:
client = DescribeFaceVerify.create_client(endpoint)
# Create a RuntimeOptions instance and set runtime options.
runtime = util_models.RuntimeOptions()
runtime.read_timeout = 10000
runtime.connect_timeout = 10000
return client.describe_face_verify_with_options(request, runtime)
if __name__ == '__main__':
DescribeFaceVerify.main()
Go
InitFaceVerify API call example
package main
import (
"fmt"
cloudauth "github.com/alibabacloud-go/cloudauth-20190307/v3/client"
openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
util "github.comcom/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) {
// An AccessKey of an Alibaba Cloud account has permissions for all APIs. We recommend that you use a RAM user for API access and daily operations.
// We strongly recommend that you do not store your AccessKey ID and AccessKey Secret in your project's code. This could lead to a compromise of your AccessKeys, threatening the security of all resources in your account.
// This example demonstrates how to use the Alibaba Cloud Credentials tool to read an AccessKey from an environment variable for authentication.
// Initialize the credential.
credential, _err := credentials.NewCredential(nil)
if _err != nil {
panic(_err)
}
// Initialize the client.
config := &openapi.Config{
// Specify the credential object.
Credential: credential,
Endpoint: endpoint,
// Configure the HTTP proxy.
// HttpProxy: tea.String("http://xx.xx.xx.xx:xxxx"),
// Configure the HTTPS proxy.
// 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.InitFaceVerifyRequest{
// The authentication solution.
ProductCode: tea.String("ID_PRO"),
// Specify the scene ID.
SceneId: tea.Int64(0),
OuterOrderNo: tea.String(""),
Model: tea.String("LIVENESS"),
// Must be set to `IDENTITY_CARD`.
CertType: tea.String("IDENTITY_CARD"),
CertName: tea.String("John Doe"),
CertNo: tea.String(""),
MetaInfo: tea.String("{\"zimVer\":\"3.0.0\",\"appVersion\": \"1\",\"bioMetaInfo\": \"4.1.0:11501568,0\",\"appName\": \"com.aliyun.antcloudauth\",\"deviceType\": \"ios\",\"osVersion\": \"iOS 10.3.2\",\"apdidToken\": \"\",\"deviceModel\": \"iPhone9,1\"}"),
// Ip: tea.String("The user's IP address"),
// UserId: tea.String("The user ID"),
// Mobile: tea.String("1300000****"),
// CallbackUrl: tea.String("https://www.aliyundoc.com"),
// CallbackToken: tea.String("xxxxxxx"),
// Set this parameter to enable encrypted transmission of personal information.
// EncryptType: tea.String("SM2"),
// CertName: tea.String("BCRD/7ZkNy7Q*****M1BMBezZe8GaYHrLwyJv558w=="),
// CertNo: tea.String("BMjsstxK3S4b1YH*****Pet8ECObfxmLN92SLsNg==")
}
response, _err := InitFaceVerifyAutoRoute(request)
// Service routing is not supported.
// response, _err := InitFaceVerify(tea.String("cloudauth.cn-shanghai.aliyuncs.com"), request)
if _err != nil {
return _err
}
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.CertifyId)
return _err
}
func InitFaceVerifyAutoRoute (request *cloudauth.InitFaceVerifyRequest) (_result *cloudauth.InitFaceVerifyResponse, _err error) {
endpoints := []*string{tea.String("cloudauth.cn-shanghai.aliyuncs.com"), tea.String("cloudauth.cn-beijing.aliyuncs.com")}
var lastResponse *cloudauth.InitFaceVerifyResponse
for _, endpoint := range endpoints {
response, _err := InitFaceVerify(endpoint, request)
lastResponse = response
if _err != nil {
var err = &tea.SDKError{}
if _t, ok := _err.(*tea.SDKError); ok {
err = _t
// If a system exception occurs, try the next region.
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 InitFaceVerify (endpoint *string, request *cloudauth.InitFaceVerifyRequest) (_result *cloudauth.InitFaceVerifyResponse, _err error) {
client, _err := CreateClient(endpoint)
if _err != nil {
return _result, _err
}
// Create a RuntimeOptions instance and set runtime options.
runtime := &util.RuntimeOptions{}
runtime.ReadTimeout = tea.Int(10000)
runtime.ConnectTimeout = tea.Int(10000)
_result = &cloudauth.InitFaceVerifyResponse{}
_body, _err := client.InitFaceVerifyWithOptions(request, runtime)
if _err != nil {
return _result, _err
}
_result = _body
return _result, _err
}
func main() {
err := _main()
if err != nil {
panic(err)
}
}
DescribeFaceVerify API call example
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) {
// An AccessKey of an Alibaba Cloud account has permissions for all APIs. We recommend that you use a RAM user for API access and daily operations.
// We strongly recommend that you do not store your AccessKey ID and AccessKey Secret in your project's code. This could lead to a compromise of your AccessKeys, threatening the security of all resources in your account.
// This example demonstrates how to use the Alibaba Cloud Credentials tool to read an AccessKey from an environment variable for authentication.
// Initialize the credential.
credential, _err := credentials.NewCredential(nil)
if _err != nil {
panic(_err)
}
// Initialize the client.
config := &openapi.Config{
// Specify the credential object.
Credential: credential,
Endpoint: endpoint,
// Configure the HTTP proxy.
// HttpProxy: tea.String("http://xx.xx.xx.xx:xxxx"),
// Configure the HTTPS proxy.
// 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.DescribeFaceVerifyRequest{
// Specify the scene ID.
SceneId: tea.Int64(0),
CertifyId: tea.String("91707dc296d469ad38e4c5efa6a0xxxx"),
}
response, _err := DescribeFaceVerifyAutoRoute(request)
// Service routing is not supported.
// response, _err := DescribeFaceVerify(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.Passed)
fmt.Println(*response.Body.ResultObject.SubCode)
fmt.Println(*response.Body.ResultObject.MaterialInfo)
fmt.Println(*response.Body.ResultObject.IdentityInfo)
fmt.Println(*response.Body.ResultObject.DeviceToken)
}
return _err
}
func DescribeFaceVerifyAutoRoute(request *cloudauth.DescribeFaceVerifyRequest) (_result *cloudauth.DescribeFaceVerifyResponse, _err error) {
endpoints := []*string{tea.String("cloudauth.cn-shanghai.aliyuncs.com"), tea.String("cloudauth.cn-beijing.aliyuncs.com")}
var lastResponse *cloudauth.DescribeFaceVerifyResponse
for _, endpoint := range endpoints {
response, _err := DescribeFaceVerify(endpoint, request)
lastResponse = response
if _err != nil {
var err = &tea.SDKError{}
if _t, ok := _err.(*tea.SDKError); ok {
err = _t
// If a system exception occurs, try the next region.
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 DescribeFaceVerify(endpoint *string, request *cloudauth.DescribeFaceVerifyRequest) (_result *cloudauth.DescribeFaceVerifyResponse, _err error) {
client, _err := CreateClient(endpoint)
if _err != nil {
return _result, _err
}
// Create a RuntimeOptions instance and set runtime options.
runtime := &util.RuntimeOptions{}
runtime.ReadTimeout = tea.Int(10000)
runtime.ConnectTimeout = tea.Int(10000)
_body, _err := client.DescribeFaceVerifyWithOptions(request, runtime)
if _err != nil {
return _result, _err
}
_result = _body
return _result, _err
}
func main() {
err := _main()
if err != nil {
panic(err)
}
}.NET
InitFaceVerify API call example
using System;
using System.Collections.Generic;
using Tea;
namespace InitFaceVerify
{
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.InitFaceVerifyRequest request = new AlibabaCloud.SDK.Cloudauth20190307.Models.InitFaceVerifyRequest
{
// The authentication solution.
ProductCode = "ID_PRO",
// Specify the scene ID.
SceneId = 0,
// A unique identifier for the request.
OuterOrderNo = "",
// The type of liveness detection to perform.
Model = "LIVENESS",
// Must be set to `IDENTITY_CARD`.
CertType = "IDENTITY_CARD",
CertName = "John Doe",
CertNo = "",
MetaInfo = "{\"zimVer\":\"3.0.0\",\"appVersion\": \"1\",\"bioMetaInfo\": \"4.1.0:11501568,0\",\"appName\": \"com.aliyun.antcloudauth\",\"deviceType\": \"ios\",\"osVersion\": \"iOS 10.3.2\",\"apdidToken\": \"\",\"deviceModel\": \"iPhone9,1\"}",
//Mobile = "1300000****",
//Ip = "114.xxx.xxx.xxx",
//UserId = "The user ID",
//CallbackUrl = "https://www.aliyundoc.com",
//CallbackToken = "xxxxxxx",
// Set this parameter to enable encrypted transmission of personal information.
// EncryptType = "SM2",
// CertName = "BCRD/7ZkNy7Q*****M1BMBezZe8GaYHrLwyJv558w==",
// CertNo = "BMjsstxK3S4b1YH*****Pet8ECObfxmLN92SLsNg=="
};
AlibabaCloud.SDK.Cloudauth20190307.Models.InitFaceVerifyResponse response = InitFaceVerifyAutoRoute(request);
// Service routing is not supported.
// AlibabaCloud.SDK.Cloudauth20190307.Models.InitFaceVerifyResponse response = InitFaceVerify("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.CertifyId);
}
public static AlibabaCloud.SDK.Cloudauth20190307.Models.InitFaceVerifyResponse InitFaceVerifyAutoRoute(AlibabaCloud.SDK.Cloudauth20190307.Models.InitFaceVerifyRequest request)
{
List<string> endpoints = new List<string>
{
"cloudauth.cn-shanghai.aliyuncs.com",
"cloudauth.cn-beijing.aliyuncs.com"
};
AlibabaCloud.SDK.Cloudauth20190307.Models.InitFaceVerifyResponse lastResponse = null;
foreach (var endpoint in endpoints)
{
try
{
AlibabaCloud.SDK.Cloudauth20190307.Models.InitFaceVerifyResponse response = InitFaceVerify(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 a network exception occurs, try the next region.
if (AlibabaCloud.TeaUtil.Common.EqualString("ServiceUnavailable", err.Code))
{
continue;
}
}
catch (Exception _err)
{
Console.WriteLine(_err);
continue;
}
}
return lastResponse;
}
public static AlibabaCloud.SDK.Cloudauth20190307.Models.InitFaceVerifyResponse InitFaceVerify(string endpoint, AlibabaCloud.SDK.Cloudauth20190307.Models.InitFaceVerifyRequest request)
{
AlibabaCloud.SDK.Cloudauth20190307.Client client = CreateClient(endpoint);
// Create a RuntimeOptions instance and set runtime options.
AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
runtime.ReadTimeout = 10000;
runtime.ConnectTimeout = 10000;
return client.InitFaceVerifyWithOptions(request, runtime);
}
}
} DescribeFaceVerify API call example
using System;
using System.Collections.Generic;
using Tea;
namespace DescribeFaceVerify
{
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.DescribeFaceVerifyRequest request = new AlibabaCloud.SDK.Cloudauth20190307.Models.DescribeFaceVerifyRequest
{
// Specify the scene ID.
SceneId = 0,
CertifyId = "91707dxxxx4c5efa6a0xxxx",
};
AlibabaCloud.SDK.Cloudauth20190307.Models.DescribeFaceVerifyResponse response = DescribeFaceVerifyAutoRoute(request);
// Service routing is not supported.
// AlibabaCloud.SDK.Cloudauth20190307.Models.DescribeFaceVerifyResponse response = DescribeFaceVerify("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.SubCode);
Console.WriteLine(response.Body.ResultObject.MaterialInfo);
Console.WriteLine(response.Body.ResultObject.IdentityInfo);
Console.WriteLine(response.Body.ResultObject.DeviceToken);
}
public static AlibabaCloud.SDK.Cloudauth20190307.Models.DescribeFaceVerifyResponse DescribeFaceVerifyAutoRoute(AlibabaCloud.SDK.Cloudauth20190307.Models.DescribeFaceVerifyRequest request)
{
List<string> endpoints = new List<string>
{
"cloudauth.cn-shanghai.aliyuncs.com",
"cloudauth.cn-beijing.aliyuncs.com"
};
AlibabaCloud.SDK.Cloudauth20190307.Models.DescribeFaceVerifyResponse lastResponse = null;
foreach (var endpoint in endpoints)
{
try
{
AlibabaCloud.SDK.Cloudauth20190307.Models.DescribeFaceVerifyResponse response = DescribeFaceVerify(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 a network exception occurs, try the next region.
if (AlibabaCloud.TeaUtil.Common.EqualString("ServiceUnavailable", err.Code))
{
continue;
}
}
catch (Exception _err)
{
Console.WriteLine(_err);
continue;
}
}
return lastResponse;
}
public static AlibabaCloud.SDK.Cloudauth20190307.Models.DescribeFaceVerifyResponse DescribeFaceVerify(string endpoint, AlibabaCloud.SDK.Cloudauth20190307.Models.DescribeFaceVerifyRequest request)
{
AlibabaCloud.SDK.Cloudauth20190307.Client client = CreateClient(endpoint);
// Create a RuntimeOptions instance and set runtime options.
AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
runtime.ReadTimeout = 10000;
runtime.ConnectTimeout = 10000;
return client.DescribeFaceVerifyWithOptions(request, runtime);
}
}
}Node.js
InitFaceVerify API call example
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');
function createClient(endpoint) {
// An AccessKey of an Alibaba Cloud account has permissions for all APIs. We recommend that you use a RAM user for API access and daily operations.
// We strongly recommend that you do not store your AccessKey ID and AccessKey Secret in your project's code. This could lead to a compromise of your AccessKeys, threatening the security of all resources in your account.
// This example demonstrates how to use the Alibaba Cloud Credentials tool to read an AccessKey from an environment variable for authentication.
const cred = new Credential();
const config = new Config.Config({
credential: cred,
// Configure the endpoint.
endpoint: endpoint,
// Configure the HTTP proxy.
// httpProxy: "http://xxx.xxx.xxx.xxx:9999",
// Configure the HTTPS proxy.
// httpsProxy: "https://username:password@xxx.xxx.xxx.xxx:9999",
});
return new CloudAuthClient(config);
}
async function initFaceVerify(endpoint, request) {
const client = createClient(endpoint);
// Create a RuntimeOptions instance and set runtime options.
const runtime = new RuntimeOptions([]);
runtime.readTimeout=10000;
runtime.connectTimeout=10000;
return await client.initFaceVerifyWithOptions(request, runtime);
}
async function initFaceVerifyAutoRoute(request) {
const endpoints = [
"cloudauth.cn-shanghai.aliyuncs.com",
"cloudauth.cn-beijing.aliyuncs.com"
];
for (const endpoint of endpoints) {
try {
const response = await initFaceVerify(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(){
// Create an API request and set the parameters.
const request = new CloudAuth.InitFaceVerifyRequest({
// Specify the scene ID.
sceneId: 0,
// A unique identifier for the request.
outerOrderNo: "",
// The authentication solution.
productCode: "ID_PRO",
// The type of liveness detection to perform.
model: "LIVENESS",
// Must be set to `IDENTITY_CARD`.
certType: "IDENTITY_CARD",
certName: "John Doe",
certNo: "",
metaInfo: "{\"zimVer\":\"3.0.0\",\"appVersion\": \"1\",\"bioMetaInfo\": \"4.1.0:11501568,0\",\n" +
" \"appName\": \"com.aliyun.antcloudauth\",\"deviceType\": \"ios\",\"osVersion\": \"iOS 10.3.2\",\"apdidToken\": \"\",\"deviceModel\": \"iPhone9,1\"}",
// mobile: "1300000****",
// ip: "114.xxx.xxx.xxx",
// userId: "12345xxxx",
// callbackUrl: "https://www.aliyundoc.com",
// callbackToken: "xxxxxxx",
// Set this parameter to enable encrypted transmission of personal information.
// encryptType: "SM2",
// certName: "BCRD/7ZkNy7Q*****M1BMBezZe8GaYHrLwyJv558w==",
// certNo: "BMjsstxK3S4b1YH*****Pet8ECObfxmLN92SLsNg=="
});
// Recommended. This method supports service routing.
const response = await initFaceVerifyAutoRoute(request);
// Service routing is not supported.
// const response = await initFaceVerify("cloudauth.cn-shanghai.aliyuncs.com", request);
if (response){
console.log(response);
console.log(response.body.requestId);
console.log(response.body.code);
console.log(response.body.message);
console.log(response.body.resultObject.certifyId);
}
}
main().then(function (response) {});
DescribeFaceVerify API call example
const Config = require("@alicloud/openapi-client");
const CloudAuth = require("@alicloud/cloudauth20190307");
const CloudAuthClient = CloudAuth.default;
const {RuntimeOptions} = require("@alicloud/tea-util");
const Credential = require("@alicloud/credentials");
function createClient(endpoint) {
// An AccessKey of an Alibaba Cloud account has permissions for all APIs. We recommend that you use a RAM user for API access and daily operations.
// We strongly recommend that you do not store your AccessKey ID and AccessKey Secret in your project's code. This could lead to a compromise of your AccessKeys, threatening the security of all resources in your account.
// This example demonstrates how to use the Alibaba Cloud Credentials tool to read an AccessKey from an environment variable for authentication.
const cred = new Credential();
const config = new Config.Config({
credential: cred,
// Configure the endpoint.
endpoint: endpoint,
// Configure the HTTP proxy.
// httpProxy: "http://xxx.xxx.xxx.xxx:9999",
// Configure the HTTPS proxy.
// httpsProxy: "https://username:password@xxx.xxx.xxx.xxx:9999",
});
return new CloudAuthClient(config);
}
async function describeFaceVerify(endpoint, request) {
const client = createClient(endpoint);
// Create a RuntimeOptions instance and set runtime options.
const runtime = new RuntimeOptions([]);
runtime.readTimeout=10000;
runtime.connectTimeout=10000;
return await client.describeFaceVerifyWithOptions(request, runtime);
}
async function describeFaceVerifyAutoRoute(request) {
const endpoints = [
"cloudauth.cn-shanghai.aliyuncs.com",
"cloudauth.cn-beijing.aliyuncs.com"
];
for (const endpoint of endpoints) {
try {
const response = await describeFaceVerify(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(){
// Create an API request and set the parameters.
const request = new CloudAuth.DescribeFaceVerifyRequest({
sceneId: 0,
certifyId: ""
});
// Recommended. This method supports service routing.
const response = await describeFaceVerifyAutoRoute(request);
// Service routing is not supported.
// const response = await describeFaceVerify("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.passed);
console.log(response.body.resultObject.identityInfo);
console.log(response.body.resultObject.materialInfo);
console.log(response.body.resultObject.deviceToken);
console.log(response.body.resultObject.subCode);
}
}
main().then(function (response) {});