App認(rèn)證接入教程
人臉核身提供服務(wù)端SDK幫助您在App中實(shí)現(xiàn)刷臉認(rèn)證功能。本文將結(jié)合示例代碼進(jìn)行詳細(xì)的說明介紹。
阿里云視覺智能開放平臺(tái)各類目視覺AI能力API接入、接口使用或問題咨詢等,請(qǐng)通過釘釘群(23109592)加入阿里云視覺智能開放平臺(tái)咨詢?nèi)郝?lián)系我們。
成為開發(fā)者
請(qǐng)您使用阿里云賬號(hào)登錄阿里云視覺智能開放平臺(tái)。如還未持有阿里云賬戶,請(qǐng)先注冊(cè)阿里云賬號(hào)。
開通服務(wù)
- 登錄阿里云視覺智能開放平臺(tái)。
- 在頂部菜單欄的能力廣場(chǎng)中單擊人臉人體。
- 在人臉人體頁面中單擊立即開通。說明 對(duì)于公測(cè)期免費(fèi)能力,在頁面中顯示免費(fèi)開通;對(duì)于商業(yè)化付費(fèi)能力,在頁面中顯示立即開通,開通后不調(diào)用不計(jì)費(fèi),調(diào)用后開始收費(fèi)。
- 確認(rèn)開通地域并勾選服務(wù)協(xié)議后,單擊立即開通。
頁面提示服務(wù)開通成功。
說明 開通了人臉人體服務(wù)后,該服務(wù)下的所有API均可以直接調(diào)用,不需要再單獨(dú)開通。
RAM授權(quán)
您還需要為您的賬戶進(jìn)行RAM授權(quán),以訪問相應(yīng)的阿里云資源。授權(quán)操作詳情請(qǐng)參見使用RAM Policy控制訪問權(quán)限。
添加依賴包
請(qǐng)根據(jù)您的代碼選擇添加不同的依賴包。
Java
(推薦)在您的Java項(xiàng)目中添加人臉人體服務(wù)的POM依賴。
<!-- https://mvnrepository.com/artifact/com.aliyun/facebody20191230 --> <dependency> <groupId>com.aliyun</groupId> <artifactId>facebody20191230</artifactId> <version>${aliyun.facebody.version}</version> </dependency>
您也可以下載人臉人體服服務(wù)的SDK包直接引用。
AI類目
SDK包名稱
SDK鏈接
Github鏈接
人臉人體
facebody20191230
Python
打開命令提示符窗口,依次執(zhí)行如下命令安裝Python SDK。
pip install alibabacloud_facebody20191230
配置環(huán)境變量
配置環(huán)境變量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET。
阿里云賬號(hào)AccessKey擁有所有API的訪問權(quán)限,建議您使用RAM用戶進(jìn)行API訪問或日常運(yùn)維,具體操作,請(qǐng)參見創(chuàng)建RAM用戶。
請(qǐng)不要將AccessKey ID和AccessKey Secret保存到工程代碼里,否則可能導(dǎo)致AccessKey泄露,威脅您賬號(hào)下所有資源的安全。
Linux和macOS系統(tǒng)配置方法
在IntelliJ IDEA中打開終端Terminal。
執(zhí)行以下命令,配置環(huán)境變量。
<access_key_id>
需替換為您RAM用戶的AccessKey ID,<access_key_secret>
替換為您RAM用戶的AccessKey Secret。如果后續(xù)需要進(jìn)行更多權(quán)限相關(guān)的配置,具體操作請(qǐng)參見使用RAM Policy控制訪問權(quán)限。export ALIBABA_CLOUD_ACCESS_KEY_ID=<access_key_id> export ALIBABA_CLOUD_ACCESS_KEY_SECRET=<access_key_secret>
Windows系統(tǒng)配置方法
新建環(huán)境變量文件,添加環(huán)境變量
ALIBABA_CLOUD_ACCESS_KEY_ID
和ALIBABA_CLOUD_ACCESS_KEY_SECRET
,并寫入已準(zhǔn)備好的AccessKey ID和AccessKey Secret。然后重啟Windows系統(tǒng)。本操作以Windows 10為例進(jìn)行說明。打開文件資源管理器,在此電腦上右鍵單擊屬性。
在右側(cè)導(dǎo)航欄,單擊高級(jí)系統(tǒng)配置。
在系統(tǒng)屬性對(duì)話框的高級(jí)頁簽下,單擊環(huán)境變量。
在環(huán)境變量對(duì)話框中,單擊新建(W)。
在彈出的新建系統(tǒng)變量對(duì)話框中,添加環(huán)境變量
ALIBABA_CLOUD_ACCESS_KEY_ID
和ALIBABA_CLOUD_ACCESS_KEY_SECRET
,并寫入已準(zhǔn)備好的AccessKey ID和AccessKey Secret。重啟Windows系統(tǒng),使配置生效。
請(qǐng)求示例
請(qǐng)求示例如下:
Java請(qǐng)求示例
package com.lixin.test.viapi.facebody; import com.aliyun.facebody20191230.models.GenRealPersonVerificationTokenResponse; public class GenRealPersonVerificationToken { /** * 使用AK&SK初始化賬號(hào)Client * @param accessKeyId * @param accessKeySecret * @return Client * @throws Exception */ public static com.aliyun.facebody20191230.Client createClient(String accessKeyId, String accessKeySecret) throws Exception { /* 初始化配置對(duì)象com.aliyun.teaopenapi.models.Config Config對(duì)象存放 AccessKeyId、AccessKeySecret、endpoint等配置 */ com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config() .setAccessKeyId(accessKeyId) .setAccessKeySecret(accessKeySecret); config.endpoint = "facebody.cn-shanghai.aliyuncs.com"; return new com.aliyun.facebody20191230.Client(config); } public static void main(String[] args) throws Exception { // 創(chuàng)建AccessKey ID和AccessKey Secret,請(qǐng)參考http://bestwisewords.com/document_detail/175144.html。 // 如果您使用的是RAM用戶的AccessKey,還需要為RAM用戶授予權(quán)限AliyunVIAPIFullAccess,請(qǐng)參考http://bestwisewords.com/document_detail/145025.html。 // 從環(huán)境變量讀取配置的AccessKey ID和AccessKey Secret。運(yùn)行代碼示例前必須先配置環(huán)境變量。 com.aliyun.facebody20191230.Client client = GenRealPersonVerificationToken.createClient(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")); com.aliyun.facebody20191230.models.GenRealPersonVerificationTokenRequest genRealPersonVerificationTokenRequest = new com.aliyun.facebody20191230.models.GenRealPersonVerificationTokenRequest() .setCertificateName("真實(shí)姓名") .setCertificateNumber("身份證號(hào)") .setMetaInfo("metainfo環(huán)境參數(shù)"); //通過端側(cè)SDK獲取 com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions(); try { GenRealPersonVerificationTokenResponse resp = client.genRealPersonVerificationTokenWithOptions(genRealPersonVerificationTokenRequest, runtime); // 輸出VerificationToken System.out.println(resp.getBody().getData().getVerificationToken()); } catch (com.aliyun.tea.TeaException teaException) { // 獲取整體報(bào)錯(cuò)信息 System.out.println(com.aliyun.teautil.Common.toJSONString(teaException)); // 獲取單個(gè)字段 System.out.println(teaException.getCode()); } } }
說明調(diào)用核身認(rèn)證移動(dòng)端請(qǐng)求接口返回的verificationToken有效期時(shí)間為30分鐘,從verificationToken生成時(shí)間開始算起,超過有效期再進(jìn)行人臉認(rèn)證會(huì)報(bào)錯(cuò),請(qǐng)?jiān)谟行跁r(shí)間內(nèi)完成認(rèn)證。
在iOS或Android客戶端發(fā)起請(qǐng)求,接入數(shù)據(jù),請(qǐng)參見iOS客戶端接入教程或Android客戶端接入教程。
package com.lixin.test.viapi.facebody; import com.aliyun.facebody20191230.models.GetRealPersonVerificationResultResponse; public class GetRealPersonVerificationResult { /** * 使用AK&SK初始化賬號(hào)Client * @param accessKeyId * @param accessKeySecret * @return Client * @throws Exception */ public static com.aliyun.facebody20191230.Client createClient(String accessKeyId, String accessKeySecret) throws Exception { /* 初始化配置對(duì)象com.aliyun.teaopenapi.models.Config Config對(duì)象存放 AccessKeyId、AccessKeySecret、endpoint等配置 */ com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config() .setAccessKeyId(accessKeyId) .setAccessKeySecret(accessKeySecret); config.endpoint = "facebody.cn-shanghai.aliyuncs.com"; return new com.aliyun.facebody20191230.Client(config); } public static void main(String[] args) throws Exception { // 創(chuàng)建AccessKey ID和AccessKey Secret,請(qǐng)參考http://bestwisewords.com/document_detail/175144.html。 // 如果您使用的是RAM用戶的AccessKey,還需要為RAM用戶授予權(quán)限AliyunVIAPIFullAccess,請(qǐng)參考http://bestwisewords.com/document_detail/145025.html。 // 從環(huán)境變量讀取配置的AccessKey ID和AccessKey Secret。運(yùn)行代碼示例前必須先配置環(huán)境變量。 com.aliyun.facebody20191230.Client client = GenRealPersonVerificationToken.createClient(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")); com.aliyun.facebody20191230.models.GetRealPersonVerificationResultRequest getRealPersonVerificationResultRequest = new com.aliyun.facebody20191230.models.GetRealPersonVerificationResultRequest() .setVerificationToken("verificationToken"); //第一步拿到的結(jié)果 com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions(); try { GetRealPersonVerificationResultResponse resp = client.getRealPersonVerificationResultWithOptions(getRealPersonVerificationResultRequest, runtime); // 輸出是否認(rèn)證通過 System.out.println(resp.getBody().getData().getPassed()); } catch (com.aliyun.tea.TeaException teaException) { // 獲取整體報(bào)錯(cuò)信息 System.out.println(com.aliyun.teautil.Common.toJSONString(teaException)); // 獲取單個(gè)字段 System.out.println(teaException.getCode()); } } }
Python請(qǐng)求示例
# -*- coding: utf-8 -*- from alibabacloud_facebody20191230.client import Client from alibabacloud_facebody20191230.models import GenRealPersonVerificationTokenRequest from alibabacloud_oss_util.models import RuntimeOptions from alibabacloud_tea_openapi.models import Config # 初始化Config config = Config( # 創(chuàng)建AccessKey ID和AccessKey Secret,請(qǐng)參考http://bestwisewords.com/document_detail/175144.html。 # 如果您用的是RAM用戶的AccessKey,還需要為RAM用戶授予權(quán)限AliyunVIAPIFullAccess,請(qǐng)參考http://bestwisewords.com/document_detail/145025.html。 # 從環(huán)境變量讀取配置的AccessKey ID和AccessKey Secret。運(yùn)行代碼示例前必須先配置環(huán)境變量。 access_key_id=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID'), access_key_secret=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET'), endpoint='facebody.cn-shanghai.aliyuncs.com', # 訪問的域名對(duì)應(yīng)的region region_id='cn-shanghai' ) request = GenRealPersonVerificationTokenRequest( certificate_name='真實(shí)姓名', certificate_number='身份證號(hào)', meta_info='metainfo環(huán)境參數(shù)' #通過端側(cè)SDK獲取 ) # 初始化RuntimeObject runtime_option = RuntimeOptions() try: # 初始化Client client = Client(config) response = client.gen_real_person_verification_token_with_options(request, runtime_option) # 輸出VerificationToken print(response.body.data.verification_token) # tips: 可通過response.body.__dict__查看屬性名稱 except Exception as error: # 獲取整體報(bào)錯(cuò)信息 print(error) # 獲取單個(gè)字段 print(error.code) # tips: 可通過error.__dict__查看屬性名稱
在iOS或Android客戶端發(fā)起請(qǐng)求,接入數(shù)據(jù),請(qǐng)參見iOS客戶端接入教程或Android客戶端接入教程。
# -*- coding: utf-8 -*- from alibabacloud_facebody20191230.client import Client from alibabacloud_facebody20191230.models import GetRealPersonVerificationResultRequest from alibabacloud_oss_util.models import RuntimeOptions from alibabacloud_tea_openapi.models import Config # 初始化Config config = Config( # 創(chuàng)建AccessKey ID和AccessKey Secret,請(qǐng)參考http://bestwisewords.com/document_detail/175144.html。 # 如果您用的是RAM用戶的AccessKey,還需要為RAM用戶授予權(quán)限AliyunVIAPIFullAccess,請(qǐng)參考http://bestwisewords.com/document_detail/145025.html。 # 從環(huán)境變量讀取配置的AccessKey ID和AccessKey Secret。運(yùn)行代碼示例前必須先配置環(huán)境變量。 access_key_id=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID'), access_key_secret=os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET'), endpoint='facebody.cn-shanghai.aliyuncs.com', # 訪問的域名對(duì)應(yīng)的region region_id='cn-shanghai' ) request = GetRealPersonVerificationResultRequest( verification_token='verificationToken' # 第一步拿到的結(jié)果 ) # 初始化RuntimeObject runtime_option = RuntimeOptions() try: # 初始化Client client = Client(config) response = client.get_real_person_verification_result_with_options(request, runtime_option) # 輸出Passed print(response.body.data.passed) # tips: 可通過response.body.__dict__查看屬性名稱 except Exception as error: # 獲取整體報(bào)錯(cuò)信息 print(error) # 獲取單個(gè)字段 print(error.code) # tips: 可通過error.__dict__查看屬性名稱
結(jié)果示例
該接口的請(qǐng)求結(jié)果示例如下。
{
"RequestId" : "10FC953D-7C0C-4915-8949-34E3246E5B79",
"Data" : {
"Pass" : "true"
}
}
從返回結(jié)果來看,該圖片的人臉與人名和身份證號(hào)碼相匹配,認(rèn)證通過。具體信息如下:
RequestId:請(qǐng)求ID。
Pass:驗(yàn)證結(jié)果為通過。