# 用户认证
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
## 导入模块
```
import userIAM_userAuth from '@ohos.userIAM.userAuth';
```
## 权限列表
ohos.permission.ACCESS_BIOMETRIC
## 完整示例
```
import userIAM_userAuth from '@ohos.userIAM.userAuth';
export default {
startAuth() {
console.info("start auth");
let tipCallback = (tip)=>{
console.info("receive tip: errorCode(" + tip.errorCode + ") code(" + tip.tipCode + ") event(" +
tip.tipEvent + ") info(" + tip.tipInfo + ")");
// 此处添加提示信息显示逻辑
};
let auth = userIAM_userAuth.getAuthenticator();
auth.on("tip", tipCallback);
auth.execute("FACE_ONLY", "S2").then((code)=>{
auth.off("tip", tipCallback);
console.info("auth success");
// 此处添加认证成功逻辑
}).catch((code)=>{
auth.off("tip", tipCallback);
console.error("auth fail, code = " + code);
// 此处添加认证失败逻辑
});
},
checkAuthSupport() {
console.info("start check auth support");
let auth = userIAM_userAuth.getAuthenticator();
let checkCode = auth.checkAvailability("FACE_ONLY", "S2");
if (checkCode == userIAM_userAuth.CheckAvailabilityResult.SUPPORTED) {
console.info("check auth support success");
// 此处添加支持指定类型认证的逻辑
} else {
console.error("check auth support fail, code = " + checkCode);
// 此处添加不支持指定类型认证的逻辑
}
},
cancelAuth() {
console.info("start cancel auth");
let auth = userIAM_userAuth.getAuthenticator();
let cancelCode = auth.cancel();
if (cancelCode == userIAM_userAuth.Result.SUCCESS) {
console.info("cancel auth success");
} else {
console.error("cancel auth fail");
}
}
}
```
## userIAM_userAuth.getAuthenticator
getAuthenticator(): Authenticator
获取Authenticator对象,用于执行用户身份认证。6+
获取Authenticator对象,用于检测设备身份认证能力、执行和取消用户身份认证,获取认证过程中的提示信息。7+
- 返回值:
| 类型 | 说明 |
| -------- | -------- |
| [Authenticator](#authenticator) | 认证器对象。 |
- 示例:
```
let authenticator = userIAM_userAuth.getAuthenticator();
```
## Authenticator
认证器对象。
### execute
execute(type: string, level: string, callback: AsyncCallback<number>): void
执行用户认证,使用callback方式作为异步方法。
- 参数:
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| type | string | 是 | 认证类型,当前只支持FACE_ONLY。
ALL为预留参数,当前版本暂不支持ALL类型的认证。 |
| level | string | 是 | 安全级别,对应认证的安全级别,有效值为S1(最低)、S2、S3、S4(最高)。
具备3D人脸识别能力的设备支持S3及以下安全级别的认证。
具备2D人脸识别能力的设备支持S2及以下安全级别的认证。 |
| callback | AsyncCallback<number> | 否 | 回调函数。 |
callback返回值:
| 类型 | 说明 |
| -------- | -------- |
| number | 表示认证结果,参见[AuthenticationResult](#authenticationresult)。 |
- 示例:
```
authenticator.execute("FACE_ONLY", "S2", (code)=>{
if (code == userIAM_userAuth.AuthenticationResult.SUCCESS) {
console.info("auth success");
return;
}
console.error("auth fail, code = " + code);
})
```
### execute
execute(type:string, level:string): Promise<number>
执行用户认证,使用promise方式作为异步方法。
- 参数:
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| type | string | 是 | 认证类型,当前只支持FACE_ONLY。
ALL为预留参数,当前版本暂不支持ALL类型的认证。 |
| level | string | 是 | 安全级别,对应认证的安全级别,有效值为S1(最低)、S2、S3、S4(最高)。
具备3D人脸识别能力的设备支持S3及以下安全级别的认证。
具备2D人脸识别能力的设备支持S2及以下安全级别的认证。 |
- 返回值:
| 类型 | 说明 |
| -------- | -------- |
| Promise<number> | 返回携带一个number的Promise。number 为认证结果,参见[AuthenticationResult](#authenticationresult)。 |
- 示例
```
let authenticator = userIAM_userAuth.getAuthenticator();
authenticator.execute("FACE_ONLY", "S2").then((code)=>{
authenticator.off("tip", tipCallback);
console.info("auth success");
}).catch((code)=>{
authenticator.off("tip", tipCallback);
console.error("auth fail, code = " + code);
});
```
### cancel7+
cancel(): number
取消当前的认证流程。
- 返回值:
| 类型 | 说明 |
| -------- | -------- |
| number | 返回取消当前认证的结果,参见[Result](#result7)。 |
- 示例:
```
let authenticator = userIAM_userAuth.getAuthenticator();
let cancelCode = authenticator.cancel();
if (cancelCode == userIAM_userAuth.Result.SUCCESS) {
console.info("cancel auth success");
} else {
console.error("cancel auth fail");
}
```
### checkAvailability7+
checkAvailability(type: AuthType, level: SecureLevel): number
根据指定的认证类型、安全等级,检测当前设备是否支持相应的认证能力。
- 参数:
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| type | string | 是 | 认证类型,当前只支持FACE_ONLY。
ALL为预留参数,当前版本暂不支持ALL类型的认证。 |
| level | string | 是 | 安全级别,对应认证的安全级别,有效值为S1(最低)、S2、S3、S4(最高)。
具备3D人脸识别能力的设备支持S3及以下安全级别的认证。
具备2D人脸识别能力的设备支持S2及以下安全级别的认证。 |
- 返回值:
| 类型 | 说明 |
| -------- | -------- |
| number | 返回检测当前设备认证能力的结果,参见[CheckAvailabilityResult](#checkavailabilityresult7)。 |
- 示例:
```
let authenticator = userIAM_userAuth.getAuthenticator();
let checkCode = authenticator.checkAvailability("FACE_ONLY", "S2");
if (checkCode == userIAM_userAuth.CheckAvailabilityResult.SUPPORTED) {
console.info("check auth support success");
} else {
console.error("check auth support fail, code = " + checkCode);
}
```
### on7+
on(type: "tip", callback: Callback<Tip>) : void;
订阅指定类型的事件。
- 参数:
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| type | string | 是 | 事件类型,当前只支持"tip"。在认证服务发送提示信息给调用者时,会触发此事件。 |
| callback | Callback<Tip> | 是 | 事件发生时的回调,当前只支持以Tip为参数的回调函数。 |
- 示例:
```
let authenticator = userIAM_userAuth.getAuthenticator();
let tipCallback = (tip)=>{
console.info("receive tip: errorCode(" + tip.errorCode + ") code(" + tip.tipCode +") event(" +
tip.tipEvent + ") info(" + tip.tipInfo + ")");
};
authenticator.on("tip", tipCallback);
```
### off7+
off(type: "tip", callback?: Callback<Tip>) : void;
取消订阅指定类型的事件。
- 参数:
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| type | string | 是 | 事件类型,当前只支持"tip"。 |
| callback | Callback<Tip> | 否 | 取消订阅的回调函数,当前只支持以Tip为参数的回调函数。如未指定此参数,同事件类型的所有回调都会被取消。 |
- 示例:
```
let authenticator = userIAM_userAuth.getAuthenticator();
let tipCallback = (tip)=>{
console.info("receive tip: errorCode(" + tip.errorCode + ") code(" + tip.tipCode + ") event(" +
tip.tipEvent + ") info(" + tip.tipInfo + ")");
};
// 取消订阅指定回调
authenticator.off("tip", tipCallback);
// 取消订阅所有回调
authenticator.off("tip");
```
## AuthenticationResult
表示认证结果的枚举。
| 名称 | 默认值 | 描述 |
| -------- | -------- | -------- |
| NO_SUPPORT | -1 | 设备不支持当前的认证方式。 |
| SUCCESS | 0 | 认证成功。 |
| COMPARE_FAILURE | 1 | 比对失败。 |
| CANCELED | 2 | 用户取消认证。 |
| TIMEOUT | 3 | 认证超时。 |
| CAMERA_FAIL | 4 | 开启相机失败。 |
| BUSY | 5 | 认证服务忙,请稍后重试。 |
| INVALID_PARAMETERS | 6 | 认证参数无效。 |
| LOCKED | 7 | 认证失败次数过多,已锁定。 |
| NOT_ENROLLED | 8 | 未录入认证凭据。 |
| GENERAL_ERROR | 100 | 其他错误。 |
## Tip7+
表示认证过程中提示信息的对象。
| 名称 | 参数类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| errorCode | number | 是 | 是否成功获取到提示信息,参考[Result](#result7)。 |
| tipEvent | number | 是 | 认证提示事件, 参考[TipEvent](#tipevent7)。当前只支持RESULT、ACQUIRE。 |
| tipCode | number | 是 | 认证提示的事件提示码。
- 当tipEvent为RESULT时,含义为认证结果,参考[AuthenticationResult](#authenticationresult)。
- 当tipEvent为ACQUIRE时,含义为提示信息,参考[TipCode](#tipcode7)。 |
| tipInfo | string | 是 | 认证提示的事件提示码的描述信息。 |
## Result7+
表示执行结果的枚举。
| 名称 | 默认值 | 描述 |
| -------- | -------- | -------- |
| SUCCESS | 0 | 执行成功。 |
| FAILED | 1 | 执行失败。 |
## CheckAvailabilityResult7+
表示检测设备认证能力结果的枚举。
| 名称 | 默认值 | 描述 |
| -------- | -------- | -------- |
| SUPPORTED | 0 | 设备支持指定的认证类型和认证安全等级。 |
| AUTH_TYPE_NOT_SUPPORT | 1 | 设备不支持指定的认证类型。 |
| SECURE_LEVEL_NOT_SUPPORT | 2 | 设备不支持指定的认证安全等级。 |
| DISTRIBUTED_AUTH_NOT_SUPPORT | 3 | 设备不支持分布式认证。 |
| NOT_ENROLLED | 4 | 设备中认证凭据未录入。 |
| PARAM_NUM_ERROR | 5 | 参数个数错误。 |
## TipEvent7+
表示认证过程中提示事件的枚举。
| 名称 | 默认值 | 描述 |
| -------- | -------- | -------- |
| RESULT | 1 | 录入或认证结果。 |
| CANCEL | 2 | 录入或认证取消。 |
| ACQUIRE | 3 | 录入或认证过程中提示。 |
| BUSY | 4 | 录入或认证功能被占用。 |
| OUT_OF_MEM | 5 | 内存不足。 |
| FACE_ID | 6 | 人脸认证凭据索引号。 |
## TipCode7+
表示认证过程中提示码的枚举。
| 名称 | 默认值 | 描述 |
| -------- | -------- | -------- |
| FACE_AUTH_TIP_TOO_BRIGHT | 1 | 光线太强,获取的图像太亮。 |
| FACE_AUTH_TIP_TOO_DARK | 2 | 光线太暗,获取的图像太暗。 |
| FACE_AUTH_TIP_TOO_CLOSE | 3 | 人脸距离设备过近。 |
| FACE_AUTH_TIP_TOO_FAR | 4 | 人脸距离设备过远。 |
| FACE_AUTH_TIP_TOO_HIGH | 5 | 设备太高,仅获取到的人脸上部。 |
| FACE_AUTH_TIP_TOO_LOW | 6 | 设备太低,仅获取到的人脸下部。 |
| FACE_AUTH_TIP_TOO_RIGHT | 7 | 设备太靠右,仅获取到的人脸右部。 |
| FACE_AUTH_TIP_TOO_LEFT | 8 | 设备太靠左,仅获取到的人脸左部。 |
| FACE_AUTH_TIP_TOO_MUCH_MOTION | 9 | 在图像采集过程中,用户人脸移动太快。 |
| FACE_AUTH_TIP_POOR_GAZE | 10 | 没有正视摄像头。 |
| FACE_AUTH_TIP_NOT_DETECTED | 11 | 没有检测到人脸信息。 |