服務(wù)端集成
本文中含有需要您注意的重要提示信息,忽略該信息可能對(duì)您的業(yè)務(wù)造成影響,請(qǐng)務(wù)必仔細(xì)閱讀。
在H5頁(yè)面接入金融級(jí)實(shí)人認(rèn)證方案時(shí),開發(fā)者需要在后端服務(wù)器集成SDK,以便調(diào)用InitFaceVerify接口獲取用于瀏覽器進(jìn)行實(shí)人認(rèn)證的認(rèn)證鏈接CertifyUrl。本文將詳細(xì)介紹服務(wù)端SDK的安裝方式、所調(diào)接口的參數(shù)說(shuō)明以及實(shí)際調(diào)用接口示例說(shuō)明。
集成須知
服務(wù)接入點(diǎn)
目前支持的接入地域如下表所示。
建議您參考本文示例代碼,配置主備地域Endpoint。在主Endpoint發(fā)生故障時(shí)可以自動(dòng)切換到備用Endpoint,保證系統(tǒng)的持續(xù)可用性。
地域 | 服務(wù)地址 | VPC地址 | 全局接入地址 |
華東2(上海) | IPv4:cloudauth.cn-shanghai.aliyuncs.com | cloudauth-vpc.cn-shanghai.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安裝與源碼下載
您可根據(jù)業(yè)務(wù)實(shí)際的技術(shù)選型,選擇合適的SDK語(yǔ)言進(jìn)行集成。
支持語(yǔ)言 | SDK下載地址 | Github源碼地址 |
Java | ||
Python | ||
Typescript | ||
Go | ||
PHP | ||
C# | ||
C++ |
服務(wù)端需要集成的兩個(gè)接口
InitFaceVerify-發(fā)起認(rèn)證請(qǐng)求
每次開始認(rèn)證前通過(guò)調(diào)用本接口獲取用于瀏覽器進(jìn)行實(shí)人認(rèn)證的認(rèn)證鏈接CertifyUrl
和每次認(rèn)證的唯一CertifyId
。
須將此接口的請(qǐng)求封裝為開始認(rèn)證的業(yè)務(wù)接口,供網(wǎng)頁(yè)端調(diào)用。
請(qǐng)求參數(shù)
名稱 | 類型 | 是否必選 | 描述 | 示例值 |
SceneId | Long | 是 | 要接入的認(rèn)證場(chǎng)景ID。該ID在控制臺(tái)創(chuàng)建認(rèn)證場(chǎng)景后自動(dòng)生成。關(guān)于如何創(chuàng)建認(rèn)證場(chǎng)景,請(qǐng)參見添加認(rèn)證場(chǎng)景。 | 1000000006 |
OuterOrderNo | String | 是 | 您自定義的業(yè)務(wù)唯一標(biāo)識(shí),用于后續(xù)定位和排查問(wèn)題使用。 支持長(zhǎng)度為32位的字母和數(shù)字組合,請(qǐng)確保唯一。 | e0c34a77f5ac40a5aa5e6ed20c353888 |
ProductCode | String | 是 | 要接入的認(rèn)證方案。 唯一取值:ID_PRO。詳情方案說(shuō)明,請(qǐng)參見PC或移動(dòng)端H5網(wǎng)頁(yè)接入。 | ID_PRO |
Model | String | 是 | 要進(jìn)行活體檢測(cè)的類型。 說(shuō)明 活體檢測(cè)類型僅支持下列取值,暫不支持自定義動(dòng)作或組合。
| MULTI_ACTION |
CertType | String | 是 | 用戶證件類型。支持的證件類型,請(qǐng)參見使用限制。 不同證件類型,取值均為IDENTITY_CARD。 | IDENTITY_CARD |
CertName | String | 是 | 您的終端用戶的真實(shí)姓名。 | 張三 |
CertNo | String | 是 | 您的終端用戶的證件號(hào)碼。 | 330103xxxxxxxxxxxx |
ReturnUrl | String | 是 | 認(rèn)證結(jié)束后回跳頁(yè)面的鏈接地址。 | https://www.aliyun.com |
MetaInfo | String | 是 | MetaInfo環(huán)境參數(shù)。實(shí)際環(huán)境需要通過(guò)JS文件,調(diào)用函數(shù) |
警告 該示例僅供參考,實(shí)際集成中不能直接應(yīng)用,否則會(huì)導(dǎo)致無(wú)法正常獲取到CertifyUrl。 |
Mobile | String | 否 | 您終端用戶的手機(jī)號(hào)碼。 | 130xxxxxxxx |
Ip | String | 否 | 您終端用戶的IP。 | 47.100.XX.XX |
UserId | String | 否 | 您自定義的用戶ID,請(qǐng)保持唯一。 | 123456789 |
CallbackUrl | String | 否 | 認(rèn)證結(jié)果的回調(diào)通知地址,回調(diào)請(qǐng)求方式默認(rèn)為GET,回調(diào)地址必須以 重要
| https://www.aliyun.com |
CallbackToken | CallbackToken | 否 | 安全Token,由您自行生成,用于防重復(fù)、防篡改校驗(yàn)。 如果設(shè)置了該值,會(huì)在回調(diào)地址中顯示CallbackToken字段。 | NMjvQanQgplBSaEI0sL86WnQplB |
CertifyUrlType | String | 否 | Web SDK設(shè)備類型。取值WEB或者H5。 說(shuō)明 只支持Web SDK設(shè)備類型。 | WEB |
CertifyUrlStyle | String | 否 | 返回CertifyUrl類型,包括:
| L |
AuthId | String | 否 | 用戶授權(quán)ID,最大長(zhǎng)度為64位字符。 | 92d46b9e9e2d703f2897f350d5bd4149 |
EncryptType | String | 否 | 加密類型。為空表示不加密。 如開啟加密傳輸,需傳入加密算法。目前僅支持SM2國(guó)密算法。 如需傳入加密算法,需對(duì)CertName和CertNo進(jìn)行加密,并傳入加密后的密文。有關(guān)參數(shù)加密的更多信息,請(qǐng)參見參數(shù)加密說(shuō)明。 | SM2 |
ProcedurePriority | String | 否 | 移動(dòng)端H5方式認(rèn)證出現(xiàn)WebRTC或者Webassembly不兼容時(shí)的降級(jí)配置。 默認(rèn)值為url。
| url |
FaceGuardOutput | String | 否 | 人臉保鏢標(biāo)簽種類。 DeviceRisk:設(shè)備風(fēng)險(xiǎn)標(biāo)簽。 說(shuō)明
| DeviceRisk |
RarelyCharacters | String | 否 | 是否開啟生僻字模式:
| Y |
uiCustomUrl | String | 否 | UI配置文件URL。關(guān)于Web SDK自定義UI說(shuō)明,請(qǐng)參見Web SDK UI自定義配置說(shuō)明。 | www.aliyundoc.com |
VideoEvidence | String | 否 | 是否開啟視頻存證。
說(shuō)明 因?yàn)橐曨l文件較大,當(dāng)網(wǎng)絡(luò)不穩(wěn)定時(shí)系統(tǒng)會(huì)丟棄視頻文件優(yōu)先保障認(rèn)證必要圖片傳輸,建議您業(yè)務(wù)上設(shè)置為弱依賴視頻。 | false |
返回?cái)?shù)據(jù)
名稱 | 類型 | 描述 | 示例值 |
RequestId | String | 請(qǐng)求ID。 | 130A2C10-B9EE-4D84-88E3-5384FF039795 |
Message | String | 返回信息。 | success |
Code | String | 返回碼:200為成功,其他為失敗。 詳細(xì)說(shuō)明,請(qǐng)參見返回Code和Message說(shuō)明。 | 200 |
ResultObject.CertifyId | String | 實(shí)人認(rèn)證唯一標(biāo)識(shí)。 重要 CertifyId字段為計(jì)費(fèi)統(tǒng)計(jì)字段,為了方便后續(xù)核對(duì)賬單,請(qǐng)您在本地留存該字段信息。 初始化接口返回的認(rèn)證CertifyId在30分鐘有效且僅能認(rèn)證提交一次,請(qǐng)您在有效期內(nèi)使用,避免重復(fù)使用。 | 91707dc296d469ad38e4c5efa6a0f24b |
ResultObject.CertifyUrl | String | Web瀏覽器進(jìn)行實(shí)人認(rèn)證的URL,認(rèn)證結(jié)束后根據(jù)入?yún)?span data-tag="parmname" id="parmname-e4v-nuu-ne6" class="parmname">ReturnUrl進(jìn)行跳轉(zhuǎn)。 警告
| http://m.alyms.cn/**** |
DescribeFaceVerify-獲取認(rèn)證詳細(xì)數(shù)據(jù)
當(dāng)您收到回調(diào)通知之后,可以在服務(wù)端通過(guò)該接口獲取相應(yīng)的認(rèn)證狀態(tài)和認(rèn)證資料。
雖然InitFaceVerify在認(rèn)證結(jié)束后跳轉(zhuǎn)ReturnUrl時(shí)會(huì)攜帶認(rèn)證結(jié)果,但考慮到瀏覽器的安全性,建議調(diào)用此接口進(jìn)行認(rèn)證結(jié)果的二次驗(yàn)證。
請(qǐng)求參數(shù)
名稱 | 類型 | 是否必選 | 描述 | 示例值 |
SceneId | Long | 是 | 認(rèn)證場(chǎng)景ID。 | 1000000006 |
CertifyId | String | 是 | 實(shí)人認(rèn)證唯一標(biāo)識(shí)。 | 91707dc296d469ad38e4c5efa6a0f24b |
返回?cái)?shù)據(jù)
名稱 | 類型 | 描述 | 示例值 |
RequestId | String | 請(qǐng)求ID。 | 130A2C10-B9EE-4D84-88E3-5384FF039795 |
Message | String | 請(qǐng)求消息的響應(yīng)信息。 | success |
Code | String | 返回碼,詳細(xì)說(shuō)明,請(qǐng)參見返回Code和Message。 | 200 |
ResultObject.Passed | String | 認(rèn)證結(jié)果:
重要 認(rèn)證結(jié)果判定以此字段為準(zhǔn)。 | T |
ResultObject.SubCode | String | 認(rèn)證結(jié)果描述。詳情請(qǐng)參見返回Code和Message。 | 200 |
ResultObject.IdentityInfo | String | 認(rèn)證的主體信息,一般的認(rèn)證場(chǎng)景返回為空。 | null |
ResultObject.DeviceRisk | String | 設(shè)備風(fēng)險(xiǎn)標(biāo)簽。 | VirtualBrowser 說(shuō)明 多個(gè)設(shè)備風(fēng)險(xiǎn)標(biāo)簽以半角逗號(hào)(,)分隔。如需了解更多設(shè)備風(fēng)險(xiǎn)標(biāo)簽及其含義,請(qǐng)參見人臉保鏢標(biāo)簽說(shuō)明。 |
ResultObject.MaterialInfo | String | 認(rèn)證主體附件信息,主要為圖片類材料。 | 示例見下文 |
ResultObject.UserInfo | String | 記錄在生僻字模式下用戶輸入的身份信息與對(duì)應(yīng)編碼。返回?cái)?shù)據(jù)為JSON格式字符串,姓名中無(wú)生僻字返回為空字符串。
|
|
判斷認(rèn)證結(jié)果請(qǐng)以ResultObject.Passed字段為準(zhǔn)。
返回示例詳述
ResultObject.MaterialInfo的JSON格式示例:
{ // 是否為攻擊:攻擊為T,非攻擊為F。 "faceAttack": "T", // 是否有臉部遮擋:有臉部遮擋為T,否則為F。 "faceOcclusion": "F", // 認(rèn)證的照片信息。 "facialPictureFront": { //人臉攻擊分。 "faceAttackScore": 0.00008597839769208804, // 照片存放客戶上海區(qū)域的OSS里,此為照片的bucket名。 "ossBucketName": "cn-shanghai-aliyun-cloudauth-1260051251634779", // 照片存放客戶上海區(qū)域的OSS里,此為照片的文件名。 "ossObjectName": "verify/1260051251634779/03a081bd96328aedf83f635f39a50c57_0.jpeg", // 照片https地址,有效期15分鐘,從查詢時(shí)開始計(jì)時(shí)。 "pictureUrl": "http://cn-shanghai-aliyun-cloudauth-1260051251634779.oss-cn-shanghai.aliyuncs.com/verify/1260051251634779/03a081bd96328aedf83f635f39a50c57_0.jpeg?Expires=1625371140&OSSAccessKeyId=STS.NTX1ngfr6Acg2Pmnn2RYM****&Signature=Hw5BF9WxJs6wI68IxKs41cxCU8****&security-token=CAISjgJ1q6Ft5B2yfSjIr5ftetTTi60X9qGMMHbcim5nXtZhu7GT1Dz2IH1PdXFgA%2Bgds%2Fswmm5U7vgalrkqEcEdHRGdN5YpsM8LrlzwO1h2TGRsq%2B5qsoasPETOITyZtZagToeUZdfZfejXGDKgvyRvwLz8WCy%2FVli%2BS%2FOggoJmadJlNWvRL0AxZrFsKxBltdUROFbIKP%2BpKWSKuGfLC1dysQcO4gEWq4bHm5fCskKD1Qenk7FO%2B9uuc6LJNZc8YM1NNP6ux%2FFze6b71ypd1gNH7q8ejtYfpGyW5oHHWwIMvErYbbaMrIV1WwZ9Z7knHaVAq%2BXwnOBkuuXYnIns0BdLMuZOSD7YQI2wYWEwgBcxt78agAF%2FHZbelNLYWtipAu5X5oG1t22SqIr1p3TMK5FrjDIVeWOppcxeRXtU%2BjR7hGcwd25scGhiraoxTXV3sxw%2F6dhFSswQ37O4j%2B%2FrCPtiGauqn2ZMdMj%2FvYwKb6KmpQqa%2BtR%2F9cxhS6hoIQRq0SUIfyXl5ZUiZbTjW22iwuX%2BPwzVCw%3D%3D", // 視頻存放客戶上海區(qū)域的OSS里,此為視頻的文件名(僅當(dāng)客戶端設(shè)置視頻參數(shù)時(shí)返回)。 "ossVerifyVideoObjectName": "verify/1260051251634779/03a081bd96328aedf83f635****_verifyvideo_dcb7.mov", // 視頻https或htttp地址,有效期15分鐘,從查詢時(shí)開始計(jì)時(shí)(僅當(dāng)客戶端設(shè)置視頻參數(shù)時(shí)返回)。 "verifyVideoUrl": "http://cn-shanghai-aliyun-cloudauth-1260051251634779.oss-cn-shanghai.aliyuncs.com/verify/******? // 活體人臉質(zhì)量分?jǐn)?shù)。 "qualityScore": 99.93476867675781, // 人臉和公安比對(duì)分?jǐn)?shù),閾值可參考下表詳細(xì)說(shuō)明。 "verifyScore": 57.678396649466755 // 降級(jí)標(biāo)識(shí)字段(僅當(dāng)deviceType是h5時(shí)返回)Keep-未降級(jí);url-該筆認(rèn)證用戶觸發(fā)了URL降級(jí)完成認(rèn)證;video-該筆認(rèn)證用戶觸發(fā)了視頻降級(jí)完成認(rèn)證 "procedurePriorityResult":"keep" }, }
ResultObject.SubCode錯(cuò)誤碼說(shuō)明,請(qǐng)參見ResultObject.SubCode錯(cuò)誤碼說(shuō)明。
verifyScore閾值說(shuō)明:
千分之一誤識(shí)率
萬(wàn)分之五誤識(shí)率
萬(wàn)分之一誤識(shí)率
十萬(wàn)分之五誤識(shí)率
十萬(wàn)分之一誤識(shí)率
70
71.5
75
76.5
80
說(shuō)明如果您有個(gè)性化需求,您可以根據(jù)業(yè)務(wù)情況,參考返回的比對(duì)分和閾值,自定義認(rèn)證結(jié)果。
返回Code和Message說(shuō)明,請(qǐng)參見返回Code和Message。
SDK調(diào)用示例
阿里云提供了OpenAPI門戶,可以使用網(wǎng)頁(yè)或命令行方式預(yù)先驗(yàn)證接口,您可以通過(guò)下面的鏈接進(jìn)入調(diào)試:
在集成操作前,默認(rèn)您已經(jīng)開通了服務(wù)并獲取了AccessKey和認(rèn)證場(chǎng)景ID,這兩個(gè)參數(shù)是調(diào)用接口所必需的。如果沒有,請(qǐng)參考前提條件獲取。
SDK集成
Java語(yǔ)言為例,要求JDK 1.8及以上版本。
在pom.xml中添加如下依賴,即可在Maven工程中使用SDK。
Java SDK依賴。以下依賴版本僅供參考,建議在實(shí)際配置時(shí)獲取最新依賴版本。
<dependency> <groupId>com.aliyun</groupId> <artifactId>cloudauth20190307</artifactId> <version>2.7.2</version> </dependency>
身份驗(yàn)證依賴。請(qǐng)查看ChangeLog.txt獲取所有已發(fā)布的版本列表(建議使用最新的版本)。
<dependency> <groupId>com.aliyun</groupId> <artifactId>credentials-java</artifactId> <version>LATEST</version> </dependency>
說(shuō)明本示例通過(guò)阿里云Credentials工具從環(huán)境變量中讀取AccessKey,來(lái)實(shí)現(xiàn)API訪問(wèn)的身份驗(yàn)證。您需要提前在系統(tǒng)配置環(huán)境變量,具體操作,請(qǐng)參見身份驗(yàn)證配置。
接口調(diào)用示例。
重要調(diào)用示例中僅設(shè)定了必要參數(shù),詳細(xì)參數(shù)請(qǐng)參見InitFaceVerify-發(fā)起認(rèn)證請(qǐng)求和DescribeFaceVerify-獲取認(rèn)證詳細(xì)數(shù)據(jù)。
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 { public static void main(String[] args) throws Exception { InitFaceVerifyRequest request = new InitFaceVerifyRequest(); // 場(chǎng)景ID+L。 request.setSceneId(100000xxxxL); // 設(shè)置商戶請(qǐng)求的唯一標(biāo)識(shí)。 request.setOuterOrderNo("xxxx"); // 認(rèn)證方案。 request.setProductCode("ID_PRO"); // 模式。 request.setModel("LIVENESS"); request.setCertType("IDENTITY_CARD"); request.setCertName("張先生"); request.setCertNo("xxxx"); // MetaInfo環(huán)境參數(shù),此參數(shù)應(yīng)由前端js獲取并傳入。 request.setMetaInfo("{}"); //業(yè)務(wù)頁(yè)面回跳的目標(biāo)地址。 request.setReturnUrl("https://www.aliyundoc.com"); InitFaceVerifyResponse response = initFaceVerifyAutoRoute(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) { // 第一個(gè)為主區(qū)域Endpoint,第二個(gè)為備區(qū)域Endpoint。 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; // 服務(wù)端錯(cuò)誤,切換到下個(gè)區(qū)域調(diào)用。 if(response != null){ if(500 == response.getStatusCode()){ continue; } if(response.getBody() != null){ if("500".equals(response.getBody().getCode())){ continue; } } } // 正常返回 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 { // 阿里云賬號(hào)AccessKey擁有所有API的訪問(wèn)權(quán)限,建議您使用RAM用戶進(jìn)行API訪問(wèn)或日常運(yùn)維。 // 強(qiáng)烈建議不要把AccessKey ID和AccessKey Secret保存到工程代碼里,否則可能導(dǎo)致AccessKey泄露,威脅您賬號(hào)下所有資源的安全。 // 本示例通過(guò)阿里云Credentials工具從環(huán)境變量中讀取AccessKey,來(lái)實(shí)現(xiàn)API訪問(wèn)的身份驗(yàn)證。如何配置環(huán)境變量,請(qǐng)參見http://m.bestwisewords.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); // 設(shè)置http代理。 //config.setHttpProxy("http://xx.xx.xx.xx:xxxx"); // 設(shè)置https代理。 //config.setHttpsProxy("https://xx.xx.xx.xx:xxxx"); Client client = new Client(config); // 創(chuàng)建RuntimeObject實(shí)例并設(shè)置運(yùn)行參數(shù)。 RuntimeOptions runtime = new RuntimeOptions(); runtime.readTimeout = 10000; runtime.connectTimeout = 10000; return client.initFaceVerifyWithOptions(request, runtime); } }
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 { public static void main(String[] args) throws Exception { // 創(chuàng)建API請(qǐng)求并設(shè)置參數(shù)。 DescribeFaceVerifyRequest request = new DescribeFaceVerifyRequest(); // 場(chǎng)景ID+L。 request.setSceneId(0L); // CertifyId在InitFaceVerify接口的返回值中。 request.setCertifyId("xxxx"); DescribeFaceVerifyResponse response = describeFaceVerifyAutoRoute(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) { // 第一個(gè)為主區(qū)域Endpoint,第二個(gè)為備區(qū)域Endpoint。 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; // 服務(wù)端錯(cuò)誤,切換到下個(gè)區(qū)域調(diào)用。 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 { // 阿里云賬號(hào)AccessKey擁有所有API的訪問(wèn)權(quán)限,建議您使用RAM用戶進(jìn)行API訪問(wèn)或日常運(yùn)維。 // 強(qiáng)烈建議不要把AccessKey ID和AccessKey Secret保存到工程代碼里,否則可能導(dǎo)致AccessKey泄露,威脅您賬號(hào)下所有資源的安全。 //本示例通過(guò)阿里云Credentials工具從環(huán)境變量中讀取AccessKey,來(lái)實(shí)現(xiàn)API訪問(wèn)的身份驗(yàn)證。如何配置環(huán)境變量,請(qǐng)參見http://m.bestwisewords.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); Client client = new Client(config); RuntimeOptions runtime = new RuntimeOptions(); runtime.readTimeout = 10000; runtime.connectTimeout = 10000; return client.describeFaceVerifyWithOptions(request, runtime); } }