### 1.下載
下載 [ 人臉登錄 SDK ](http://attachment.yun2win.com/v1/attachments/1592391346703614/e7837fb7063acce0200b8e83e586cc5e),其中包含了 sdk 及使用 demo,開發者可以自己研讀實踐。
### 2. SDK成員對象
name | 類型 | 說明 |
-|-|-
FaceLogin | class | 包含人臉登錄的主要操作 |
IFaceLoginHandler | interface | 人臉登錄返回結果 |
EventCode | enum | 異常事件碼 |
### 3. 詳細描述
### FaceLogin 成員方法
### ◆ 設置 Token
```
public void setToken(String token)
```
參數
name | 類型 | 說明
-|-|-
token | String | 在 App 服務器端生成的用于鑒權的 Token |
注解:
* 在初始化FaceLogin后應首先調用 setToken(token) 設置 Token。為保證 App 的安全性,App 客戶端應請求 App 服務器端接口獲取 Token(服務端端生成 Token,詳見[從服務端生成 Token](https://help.yun2win.com/fuyuan-help/1700825#1_Accesstoken_0))。
* 當 Token 無效(INVALID_TOKEN)或 Token 過期(TOKEN_HAS_EXPIRED)時,客戶端需要重新請求服務器獲取 Token,并調用 setToken(token) 進行設置。
<br />
### ◆ 人臉驗證
```
public void validate(Bitmap bitmap, String deviceId, IFaceLoginHandler handler)
```
參數
name | 類型 | 說明
-|-|-
bitmap | android.graphics.Bitmap | 攝像頭采集的圖片 |
deviceId | String | 設備唯一碼 |
handler | IFaceLoginHandler | 回調處理方法 |
注解:
* 第一次調用validate之前,必須設置應用的Token。
* deviceId:應用中不同用戶應具有不同的deviceId;同一用戶,每次調用時應保證deviceId值不變。
* IFaceLoginHandler:參考接口定義。
<br />
### ◆ 確認工號
```
public void confirm(String uid)
```
參數
name | 類型 | 說明
-|-|-
uid | String | 員工工號 |
注解:
* 此方法必須在調用 validate 方法觸發 IFaceLoginHandler 接口的 handleConfirm() 回調之后進行調用。
* 此方法只在第一次識別成功時進行調用。
* 在第一次識別調用成功后,如果該 uid 使用了不同的的 deviceId 調用 validate 方法,或使用了其他人臉進行驗證,會再次觸發 handleConfirm() 回調,進而需要再次調用此方法。
* uid:員工工號,交由用戶填寫。
* 請控制此方法調用次數(3次),若超出限制,給出錯誤提示(員工信息有可能未在人臉庫注冊,或信息不匹配)。
<br/>
## IFaceLoginHandler 成員方法
### ◆ 識別成功回調
```
void onSuccess(String identityToken)
```
參數
name | 類型 | 說明
-|-|-
identityToken | String | 用于 App 登錄的身份Token |
注解:
* App 調用服務器端登錄接口,服務器使用此 identityToken 或取用戶信息。(服務端獲取用戶信息,詳見[從服務端獲取用戶信息]([https://help.yun2win.com/fuyuan-help/1700825#2\_54](https://help.yun2win.com/fuyuan-help/1700825#2_54)))。
<br />
### ◆ 處理Confirm請求
```
void handleConfirm()
```
注解:
* 當觸發此回調時,調用 faceLogin.confirm(uid) 方法。
<br />
### ◆ 處理異常事件請求
```
void handleEvent(EventCode code)
```
參數
name | 類型 | 說明
-|-|-
code | EventCode 枚舉 | 異常事件碼 |
EventCode:
| 枚舉值 | 描述 | 處理方式
| -------- | -----: | :----: |
| MODULE_DISABLED | 模塊已被禁用 | 開通模塊 |
| MODULE_NOT_FORMAL | 模塊還未申請正式 | 申請正式服務 |
| NO_FACE | 未檢測到人臉 | 拍照重試 |
| NO_MATCH_FACE | 未找到匹配的人臉 | 拍照重試 |
| INVALID_TOKEN | 無效的 Token | 實時更新 Token |
| TOKEN_HAS_EXPIRED | Token已過期 | 實時更新 Token |
| FORMAT_ERROR | 輸入圖片格式不正確 | 建議JPEG |
注解:
* NO_FACE、NO_MATCH_FACE:未檢測到人臉或未找到匹配的人臉,在進行人臉識別時, App 請控制識別次數(5次)或識別總時長(10秒),當超出限制條件時中斷匹配驗證,并給出提示(員工信息有可能未在人臉庫注冊,或信息不匹配)。
<br />
### ◆ 識別失敗回調
```
void onFailure(Exception ex)
```
參數
name | 類型 | 說明
-|-|-
ex | Exeption | 系統或網絡異常 |
注解:
* java標準異常,請根據異常進行處理。