人臉核身服務提供Android客戶端SDK幫助您在App中實現刷臉認證功能。本文將結合示例代碼指導您在Android應用中集成人臉核身服務。
阿里云視覺智能開放平臺各類目視覺AI能力API接入、接口使用或問題咨詢等,請通過釘釘群(23109592)加入阿里云視覺智能開放平臺咨詢群聯系我們。
前提條件
應用必須在Android 4.4+真機平臺上運行。
權限說明
如果需要適配折疊屏手機,需要在App的AndroidManifest.xml中注冊以下權限,以便SDK監聽折疊屏設備的折疊/展開狀態改變。
<uses-permission android:name="android.permission.CHANGE_CONFIGURATION"/>
獲取SDK和Demo代碼
模擬器使用存在安全風險,暫不支持在模擬器上運行。
配置依賴
解壓SDK,將所有.aar包放入libs目錄下。
在工程的build.gradle文件中添加libs目錄作為依賴倉庫。
repositories { flatDir { dirs 'libs' // aar目錄 } }
在應用的build.gradle文件中添加配置。
android { // 添加以下內容 useLibrary 'org.apache.http.legacy' }
在應用的build.gradle文件中添加依賴。
dependencies { .... //fastjson 依賴 implementation 'com.alibaba:fastjson:1.2.83_noneautotype' // 本地依賴 compile(name: 'baseverify-2.3.15.240328142352', ext: 'aar') compile(name: 'facade-2.3.15.240328142352', ext: 'aar') compile(name: 'face-2.3.15.240328142352', ext: 'aar') compile(name: 'ocr-2.3.15.240328142352', ext: 'aar') compile(name: 'faceaudio-2.3.15.240328142352', ext: 'aar') compile(name: 'facelanguage-2.3.15.240328142352', ext: 'aar') compile(name: 'APSecuritySDK-DeepSec-7.0.1.20240314.jiagu', ext: 'aar') }
調用接口
初始化SDK。
為提高身份核驗的用戶體驗,并為刷臉認證準備必要數據,Android客戶端需要進行SDK初始化。初始化的代碼示例如下:
ZIMFacade.install(context);
獲取metainfo數據。
代碼示例如下:
String metaInfos = ZIMFacade.getMetaInfos(context);
接入方移動端在人臉核身移動端核身認證移動端請求時需要傳入該metainfo值。
開始認證。
代碼示例如下:
ZIMFacade zimFacade = ZIMFacadeBuilder.create(MainActivity.this); HashMap<String, String> extParams = new HashMap<>(); //如需指定活體檢測UI界面方向(橫屏),請指定這一項。 // extParams.put(ZIMFacade.ZIM_EXT_PARAMS_KEY_SCREEN_ORIENTATION, ZIMFacade.ZIM_EXT_PARAMS_VAL_SCREEN_LAND); //如需支持活體視頻返回,請指定這一項,并在response.videoFilePath中獲取視頻本地路徑。 extParams.put(ZIMFacade.ZIM_EXT_PARAMS_KEY_USE_VIDEO, ZIMFacade.ZIM_EXT_PARAMS_VAL_USE_VIDEO_TRUE); //如需自定義活體檢測頁面的進度條顏色(默認可不設置),請設置此項,如紅色 #FF0000。 extParams.put(ZIMFacade.ZIM_EXT_PARAMS_KEY_FACE_PROGRESS_COLOR, "#FF0000"); zimFacade.verify(verificationToken, true, extParams, new ZIMCallback() { @Override public boolean response(final ZIMResponse response) { if (1000 == response.code) { showMessageBox("刷臉通過"); } else { showMessageBox("刷臉失敗([" + response.code + "]" + response.reason + ")"); } return true; } });
說明調用核身認證移動端請求接口返回的verificationToken有效期時間為30分鐘,從verificationToken生成時間開始算起,超過有效期再進行人臉認證會報錯,請在有效期時間內完成認證。
ZIMCallback的response回調需要有返回值,默認為true。
返回結果。
刷臉認證SDK回調結果中的ZIMResponse類,該類中定義了對應的結果編碼和原因,如下所示:
/** * 刷臉認證回調結果 */ public class ZIMResponse { /** * 返回結果編碼: * 1000: 刷臉成功 * 1001: 系統錯誤 * 1003: 驗證中斷 * 2002: 網絡錯誤 * 2006: 刷臉失敗 */ public int code; /** * 返回結果原因信息 */ public String reason; /** * 結果文案描述,可能為空 */ public String msg; /** * 設備token */ public String deviceToken; /** * 如果采用視頻返照,這個字段返回視頻的路徑 */ public String videoFilePath; /** * 人臉核身返照照片 */ public byte[] bitmap; }
返回結果說明。
HttpCode
描述
1000
表示刷臉成功,該結果僅供參考,可通過移動端核身認證移動端查詢獲取最終認證結果。
1001
表示系統錯誤。
1003
表示驗證中斷。
2002
表示網絡錯誤。
2006
表示刷臉失敗,如需獲取更詳細的失敗原因,可通過移動端核身認證移動端查詢獲取最終認證結果。
了解更多信息,請參見Android客戶端錯誤碼詳情。
接口混淆配置
為避免接口混淆,您可以參考以下代碼來保留類名:
-verbose
-keep class com.alipay.face.api.** {*;}
-keep class com.alipay.zoloz.toyger.**{*;}
-keep class com.dtf.face.api.** {*;}
-keep class com.dtf.face.ocr.verify.DTFOcrFacade { *; }
-keep class com.dtf.face.verify.** {*;}
-keep class com.dtf.face.network.model.** {*;}
-keep class com.dtf.face.network.APICallback {*;}
-keep class com.dtf.face.config.**{*;}
-keep class com.dtf.face.log.** {*;}
-keep class com.dtf.face.ui.widget.ToygerWebView {*;}
-keep class com.dtf.toyger.base.** {*;}
-keep class com.dtf.face.network.mpass.biz.model.** { *; }
-keep class faceverify.** { *; }
-keep class ocrverify.** { *; }
-keep class com.alipay.alipaysecuritysdk.** { *; }
-keep class com.alipay.deviceid.** { *; }
# FastJson Keep
-keep class com.alibaba.fastjson.** {*;}
-keep class org.json.** {*;}