### 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标准异常,请根据异常进行处理。