js-apis-useriam-userauth.md 35.7 KB
Newer Older
Z
zengyawen 已提交
1 2
# 用户认证

3 4 5
提供用户认证能力,可应用于设备解锁、支付、应用登录等身份认证场景。

> **说明:**
Z
zengyawen 已提交
6 7 8 9 10
> 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。


## 导入模块

11
```js
Z
zengyawen 已提交
12 13 14
import userIAM_userAuth from '@ohos.userIAM.userAuth';
```

Y
youliang_1314 已提交
15 16 17 18 19 20
## AuthResultInfo<sup>9+</sup>

表示认证结果信息。

**系统能力**:以下各项对应的系统能力均为SystemCapability.UserIAM.UserAuth.Core。

21
| 参数名称         | 参数类型   | 必填 | 说明                 |
Y
youliang_1314 已提交
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| ------------ | ---------- | ---- | -------------------- |
| result        | number | 是   | 认证结果。       |
| token        | Uint8Array | 否   | 用户身份认证通过的凭证。 |
| remainAttempts  | number     | 否   | 剩余的认证操作次数。 |
| lockoutDuration | number     | 否   | 认证操作的冻结时间。 |

## TipInfo<sup>9+</sup>

表示认证过程中的提示信息。

**系统能力**:以下各项对应的系统能力均为SystemCapability.UserIAM.UserAuth.Core。

| 参数名称         | 参数类型   | 必填 | 说明                 |
| ------------ | ---------- | ---- | -------------------- |
| module        | number | 是   | 发送提示信息的模块标识。       |
| tip        | number | 是   | 认证过程提示信息。       |

Y
youliang_1314 已提交
39 40
## EventInfo<sup>9+</sup>

Y
youliang_1314 已提交
41
表示认证过程中事件信息的类型。
Y
youliang_1314 已提交
42

Y
youliang_1314 已提交
43
**系统能力**:以下各项对应的系统能力均为SystemCapability.UserIAM.UserAuth.Core。
Y
youliang_1314 已提交
44

Y
youliang_1314 已提交
45
| 取值类型    | 说明                       |
Y
youliang_1314 已提交
46
| --------- | ----------------------- |
47 48
| [AuthResultInfo](#authresultinfo9)    | 获取到的认证结果信息。  |
| [TipInfo](#tipinfo9)    | 认证过程中的提示信息。      |
Y
youliang_1314 已提交
49

Y
youliang_1314 已提交
50 51 52 53 54 55 56 57 58
## AuthEventKey<sup>9+</sup>

表示认证事件类型的关键字,作为[on](#on9)接口的的参数。

| 取值类型       | 说明                    |
| ---------- | ----------------------- |
| "result" | [on](#on9)接口第一个参数为"result"时,[callback](#callback9)回调返回认证的结果信息。 |
| "tip"    | [on](#on9)接口第一个参数为"tip"时,[callback](#callback9)回调返回认证操作中的提示信息。 |

Y
youliang_1314 已提交
59 60
## AuthEvent<sup>9+</sup>

Y
youliang_1314 已提交
61
认证接口的异步回调对象。
Y
youliang_1314 已提交
62 63 64 65 66

### callback<sup>9+</sup>

callback: (result : EventInfo) => void

Y
youliang_1314 已提交
67
通过该回调获取认证结果信息或认证过程中的提示信息。
Y
youliang_1314 已提交
68 69 70 71 72

**系统能力**:SystemCapability.UserIAM.UserAuth.Core

**参数:**

73 74 75
| 参数名称    | 类型                       | 必填 | 说明                           |
| --------- | -------------------------- | ---- | ------------------------------ |
| result    | [EventInfo](#eventinfo9)     | 是   | 返回的认证结果信息或提示信息。  |
Y
youliang_1314 已提交
76 77 78

**示例:**

Y
youliang_1314 已提交
79 80 81 82 83 84 85 86 87 88
```js
import userIAM_userAuth from '@ohos.userIAM.userAuth';

let challenge = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]);
let authType = userIAM_userAuth.UserAuthType.FACE;
let authTrustLevel = userIAM_userAuth.AuthTrustLevel.ATL1;
// 通过callback获取认证结果
try {
    let auth = userIAM_userAuth.getAuthInstance(challenge, authType, authTrustLevel);
    auth.on("result", {
Y
youliang_1314 已提交
89 90 91 92 93 94
        callback: (result: userIAM_userAuth.AuthResultInfo) => {
            console.log("authV9 result " + result.result);
            console.log("authV9 token " + result.token);
            console.log("authV9 remainAttempts " + result.remainAttempts);
            console.log("authV9 lockoutDuration " + result.lockoutDuration);
        }
Y
youliang_1314 已提交
95 96 97 98 99 100 101 102 103 104 105
    });
    auth.start();
    console.log("authV9 start success");
} catch (error) {
    console.log("authV9 error = " + error);
    // do error
}
// 通过callback获取认证过程中的提示信息
try {
    let auth = userIAM_userAuth.getAuthInstance(challenge, authType, authTrustLevel);
    auth.on("tip", {
106 107 108 109 110 111 112 113 114
        callback : (result : userIAM_userAuth.TipInfo) => {
            switch (result.tip) {
                case userIAM_userAuth.FaceTips.FACE_AUTH_TIP_TOO_BRIGHT:
                // do something;
                case userIAM_userAuth.FaceTips.FACE_AUTH_TIP_TOO_DARK:
                // do something;
                default:
                // do others
            }
Y
youliang_1314 已提交
115
        }
Y
youliang_1314 已提交
116 117 118 119 120 121 122 123
    });
    auth.start();
    console.log("authV9 start success");
} catch (error) {
    console.log("authV9 error = " + error);
    // do error
}
```
Y
youliang_1314 已提交
124 125 126 127 128 129 130 131 132

## AuthInstance<sup>9+</sup>

执行用户认证的对象。

### on<sup>9+</sup>

on(name : AuthEventKey, callback : AuthEvent) : void

Y
youliang_1314 已提交
133
订阅指定类型的用户认证事件。
Y
youliang_1314 已提交
134

135 136
> **说明:**
> 使用获取到的[AuthInstance](#authinstance9)对象调用该接口进行订阅。
Y
youliang_1314 已提交
137 138 139 140 141

**系统能力**:SystemCapability.UserIAM.UserAuth.Core

**参数:**

142
| 参数名称    | 类型                        | 必填 | 说明                       |
Y
youliang_1314 已提交
143
| --------- | -------------------------- | ---- | ------------------------- |
Y
youliang_1314 已提交
144 145 146
| name  | [AuthEventKey](#autheventkey9) | 是   | 表示认证事件类型,取值为"result"时,回调函数返回认证结果;取值为"tip"时,回调函数返回认证过程中的提示信息。 |
| callback  | [AuthEvent](#authevent9)   | 是   | 认证接口的回调函数,用于返回认证结果或认证过程中的提示信息。          |

147
以下错误码的详细介绍请参见[用户认证错误码](../errorcodes/errcode-useriam.md)
Y
youliang_1314 已提交
148

Y
youliang_1314 已提交
149 150 151 152 153 154
**错误码:**

| 错误码ID | 错误信息 |
| -------- | ------- |
| 401 | Incorrect parameters. |
| 12500002 | General operation error. |
Y
youliang_1314 已提交
155 156 157

**示例:**

Y
youliang_1314 已提交
158 159 160 161 162 163 164 165 166 167
```js
import userIAM_userAuth from '@ohos.userIAM.userAuth';

let challenge = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]);
let authType = userIAM_userAuth.UserAuthType.FACE;
let authTrustLevel = userIAM_userAuth.AuthTrustLevel.ATL1;
try {
    let auth = userIAM_userAuth.getAuthInstance(challenge, authType, authTrustLevel);
    // 订阅认证结果
    auth.on("result", {
Y
youliang_1314 已提交
168 169 170 171 172 173
        callback: (result: userIAM_userAuth.AuthResultInfo) => {
            console.log("authV9 result " + result.result);
            console.log("authV9 token " + result.token);
            console.log("authV9 remainAttempts " + result.remainAttempts);
            console.log("authV9 lockoutDuration " + result.lockoutDuration);
        }
Y
youliang_1314 已提交
174 175 176
    });
    // 订阅认证过程中的提示信息
    auth.on("tip", {
Y
youliang_1314 已提交
177 178 179 180 181 182 183 184 185 186
        callback : (result : userIAM_userAuth.TipInfo) => {
            switch (result.tip) {
                case userIAM_userAuth.FaceTips.FACE_AUTH_TIP_TOO_BRIGHT:
                // do something;
                case userIAM_userAuth.FaceTips.FACE_AUTH_TIP_TOO_DARK:
                // do something;
                default:
                // do others
            }
        }
Y
youliang_1314 已提交
187 188 189 190 191 192 193 194
    });
    auth.start();
    console.log("authV9 start success");
} catch (error) {
    console.log("authV9 error = " + error);
    // do error
}
```
Y
youliang_1314 已提交
195 196 197 198 199

### off<sup>9+</sup>

off(name : AuthEventKey) : void

Y
youliang_1314 已提交
200
取消订阅特定类型的认证事件。
Y
youliang_1314 已提交
201

202 203
> **说明:**
> 需要使用已经成功订阅事件的[AuthInstance](#authinstance9)对象调用该接口进行取消订阅。
Y
youliang_1314 已提交
204 205 206

**系统能力**:SystemCapability.UserIAM.UserAuth.Core

207
| 参数名称    | 类型                        | 必填 | 说明                       |
Y
youliang_1314 已提交
208
| --------- | -------------------------- | ---- | ------------------------- |
Y
youliang_1314 已提交
209 210
| name    | [AuthEventKey](#autheventkey9)      | 是   | 表示认证事件类型,取值为"result"时,取消订阅认证结果;取值为"tip"时,取消订阅认证过程中的提示信息。 |

211
以下错误码的详细介绍请参见[用户认证错误码](../errorcodes/errcode-useriam.md)
Y
youliang_1314 已提交
212

Y
youliang_1314 已提交
213 214 215 216 217 218
**错误码:**

| 错误码ID | 错误信息 |
| -------- | ------- |
| 401 | Incorrect parameters. |
| 12500002 | General operation error. |
Y
youliang_1314 已提交
219 220 221

**示例:**

Y
youliang_1314 已提交
222 223
```js
import userIAM_userAuth from '@ohos.userIAM.userAuth';
Y
youliang_1314 已提交
224

Y
youliang_1314 已提交
225 226 227 228 229 230 231 232 233 234 235 236 237 238
let challenge = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]);
let authType = userIAM_userAuth.UserAuthType.FACE;
let authTrustLevel = userIAM_userAuth.AuthTrustLevel.ATL1;
let auth;
try {
    auth = userIAM_userAuth.getAuthInstance(challenge, authType, authTrustLevel);
    console.log("get auth instance success");
} catch (error) {
    console.log("get auth instance failed" + error);
}

try {
    // 订阅认证结果
    auth.on("result", {
Y
youliang_1314 已提交
239 240 241 242 243 244
        callback: (result: userIAM_userAuth.AuthResultInfo) => {
            console.log("authV9 result " + result.result);
            console.log("authV9 token " + result.token);
            console.log("authV9 remainAttempts " + result.remainAttempts);
            console.log("authV9 lockoutDuration " + result.lockoutDuration);
        }
Y
youliang_1314 已提交
245 246 247 248 249 250 251 252 253 254 255 256 257
    });
    console.log("subscribe authentication event success");
} catch (error) {
    console.log("subscribe authentication event failed " + error);
}
// 取消订阅认证结果
try {
    auth.off("result");
    console.info("cancel subscribe authentication event success");
} catch (error) {
    console.info("cancel subscribe authentication event failed, error = " + error);
}
```
Y
youliang_1314 已提交
258 259 260 261 262

### start<sup>9+</sup>

start() : void

Y
youliang_1314 已提交
263 264 265 266
开始认证。

> **说明:**
> 使用获取到的[AuthInstance](#authinstance9)对象调用该接口进行认证。
Y
youliang_1314 已提交
267 268 269 270 271

**需要权限**:ohos.permission.ACCESS_BIOMETRIC

**系统能力**:SystemCapability.UserIAM.UserAuth.Core

272
以下错误码的详细介绍请参见[用户认证错误码](../errorcodes/errcode-useriam.md)
Y
youliang_1314 已提交
273

Y
youliang_1314 已提交
274 275 276 277 278 279 280 281 282 283 284
**错误码:**

| 错误码ID | 错误信息 |
| -------- | ------- |
| 201 | Permission verification failed. |
| 401 | Incorrect parameters. |
| 12500002 | General operation error. |
| 12500005 | The authentication type is not supported. |
| 12500006 | The authentication trust level is not supported. |
| 12500010 | The type of credential has not been enrolled. |

Y
youliang_1314 已提交
285 286
**示例:**

Y
youliang_1314 已提交
287 288 289 290 291 292 293 294 295 296 297 298 299 300 301
```js
import userIAM_userAuth from '@ohos.userIAM.userAuth';

let challenge = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]);
let authType = userIAM_userAuth.UserAuthType.FACE;
let authTrustLevel = userIAM_userAuth.AuthTrustLevel.ATL1;

try {
    let auth = userIAM_userAuth.getAuthInstance(challenge, authType, authTrustLevel);
    auth.start();
    console.info("authV9 start auth success");
} catch (error) {
    console.info("authV9 start auth failed, error = " + error);
}
```
Y
youliang_1314 已提交
302 303 304 305 306

### cancel<sup>9+</sup>

cancel(): void

Y
youliang_1314 已提交
307 308 309
取消认证。

> **说明:**
310
> 使用获取到的[AuthInstance](#authinstance9)对象调用该接口进行取消认证,此[AuthInstance](#authinstance9)需要是正在进行认证的对象。
Y
youliang_1314 已提交
311 312 313 314 315

**需要权限**:ohos.permission.ACCESS_BIOMETRIC

**系统能力**:SystemCapability.UserIAM.UserAuth.Core

316
以下错误码的详细介绍请参见[用户认证错误码](../errorcodes/errcode-useriam.md)
Y
youliang_1314 已提交
317

Y
youliang_1314 已提交
318 319 320 321 322 323 324 325
**错误码:**

| 错误码ID | 错误信息 |
| -------- | ------- |
| 201 | Permission verification failed. |
| 401 | Incorrect parameters. |
| 12500002 | General operation error. |

Y
youliang_1314 已提交
326 327
**示例:**

Y
youliang_1314 已提交
328 329 330 331 332 333 334 335 336 337 338 339 340 341 342
```js
import userIAM_userAuth from '@ohos.userIAM.userAuth';

let challenge = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]);
let authType = userIAM_userAuth.UserAuthType.FACE;
let authTrustLevel = userIAM_userAuth.AuthTrustLevel.ATL1;

try {
    let auth = userIAM_userAuth.getAuthInstance(challenge, authType, authTrustLevel);
    auth.cancel();
    console.info("cancel auth success");
} catch (error) {
    console.info("cancel auth failed, error = " + error);
}
```
Y
youliang_1314 已提交
343 344 345 346 347 348 349 350

## userIAM_userAuth.getAuthInstance<sup>9+</sup>

getAuthInstance(challenge : Uint8Array, authType : UserAuthType, authTrustLevel : AuthTrustLevel): AuthInstance

获取AuthInstance对象,用于执行用户身份认证。

> **说明:**
Y
youliang_1314 已提交
351
> 每个AuthInstance只能进行一次认证,若需要再次进行认证则需重新获取AuthInstance。
Y
youliang_1314 已提交
352 353 354 355 356

**系统能力**:SystemCapability.UserIAM.UserAuth.Core

**参数:**

357
| 参数名称         | 类型                                     | 必填 | 说明                     |
Y
youliang_1314 已提交
358 359 360 361 362 363 364 365 366 367 368
| -------------- | ---------------------------------------- | ---- | ------------------------ |
| challenge      | Uint8Array                               | 是   | 挑战值,最大长度为32字节,可以填null。     |
| authType       | [UserAuthType](#userauthtype8)           | 是   | 认证类型,当前支持FACE。 |
| authTrustLevel | [AuthTrustLevel](#authtrustlevel8)       | 是   | 认证信任等级。               |

**返回值:**

| 类型                                      | 说明         |
| ----------------------------------------- | ------------ |
| [AuthInstance](#authinstance9) | 认证器对象。 |

369
以下错误码的详细介绍请参见[用户认证错误码](../errorcodes/errcode-useriam.md)
Y
youliang_1314 已提交
370

Y
youliang_1314 已提交
371 372 373 374 375 376 377 378 379
**错误码:**

| 错误码ID | 错误信息 |
| -------- | ------- |
| 401 | Incorrect parameters. |
| 12500002 | General operation error. |
| 12500005 | The authentication type is not supported. |
| 12500006 | The authentication trust level is not supported. |

Y
youliang_1314 已提交
380 381
**示例:**

Y
youliang_1314 已提交
382 383
```js
import userIAM_userAuth from '@ohos.userIAM.userAuth';
Y
youliang_1314 已提交
384

Y
youliang_1314 已提交
385 386 387 388 389 390 391 392 393 394 395
let challenge = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]);
let authType = userIAM_userAuth.UserAuthType.FACE;
let authTrustLevel = userIAM_userAuth.AuthTrustLevel.ATL1;

try {
    let auth = userIAM_userAuth.getAuthInstance(challenge, authType, authTrustLevel);
    console.info("get auth instance success");
} catch (error) {
    console.info("get auth instance success failed, error = " + error);
}
```
Y
youliang_1314 已提交
396 397 398 399 400 401 402 403 404 405 406 407 408 409 410

## userIAM_userAuth.getVersion<sup>9+</sup>

getVersion(): number

获取认证器的版本信息。

**需要权限**:ohos.permission.ACCESS_BIOMETRIC

**系统能力**:SystemCapability.UserIAM.UserAuth.Core

**返回值:**

| 类型   | 说明                   |
| ------ | ---------------------- |
Y
youliang_1314 已提交
411 412
| number | 认证器版本信息。 |

413
以下错误码的详细介绍请参见[用户认证错误码](../errorcodes/errcode-useriam.md)
Y
youliang_1314 已提交
414

Y
youliang_1314 已提交
415 416 417 418 419 420
**错误码:**

| 错误码ID | 错误信息 |
| -------- | ------- |
| 201 | Permission verification failed. |
| 12500002 | General operation error. |
Y
youliang_1314 已提交
421 422 423

**示例:**

Y
youliang_1314 已提交
424 425
```js
import userIAM_userAuth from '@ohos.userIAM.userAuth';
Y
youliang_1314 已提交
426

Y
youliang_1314 已提交
427 428 429 430 431 432 433
try {
    let version = userIAM_userAuth.getVersion();
    console.info("auth version = " + version);
} catch (error) {
    console.info("get version failed, error = " + error);
}
```
Y
youliang_1314 已提交
434 435 436 437 438

## userIAM_userAuth.getAvailableStatus<sup>9+</sup>

getAvailableStatus(authType : UserAuthType, authTrustLevel : AuthTrustLevel): void

Y
youliang_1314 已提交
439
查询指定类型和等级的认证能力是否支持。
Y
youliang_1314 已提交
440 441 442 443 444 445 446

**需要权限**:ohos.permission.ACCESS_BIOMETRIC

**系统能力**:SystemCapability.UserIAM.UserAuth.Core

**参数:**

447
| 参数名称         | 类型                               | 必填 | 说明                       |
Y
youliang_1314 已提交
448 449
| -------------- | ---------------------------------- | ---- | -------------------------- |
| authType       | [UserAuthType](#userauthtype8)     | 是   | 认证类型,当前只支持FACE。 |
Y
youliang_1314 已提交
450 451
| authTrustLevel | [AuthTrustLevel](#authtrustlevel8) | 是   | 认证信任等级。       |

452
以下错误码的详细介绍请参见[用户认证错误码](../errorcodes/errcode-useriam.md)
Y
youliang_1314 已提交
453

Y
youliang_1314 已提交
454 455 456 457 458 459 460 461 462 463
**错误码:**

| 错误码ID | 错误信息 |
| -------- | ------- |
| 201 | Permission verification failed. |
| 401 | Incorrect parameters. |
| 12500002 | General operation error. |
| 12500005 | The authentication type is not supported. |
| 12500006 | The authentication trust level is not supported. |
| 12500010 | The type of credential has not been enrolled. |
Y
youliang_1314 已提交
464 465 466

**示例:**

Y
youliang_1314 已提交
467 468
```js
import userIAM_userAuth from '@ohos.userIAM.userAuth';
Y
youliang_1314 已提交
469

Y
youliang_1314 已提交
470 471 472 473 474 475 476
try {
    userIAM_userAuth.getAvailableStatus(userIAM_userAuth.UserAuthType.FACE, userIAM_userAuth.AuthTrustLevel.ATL1);
    console.info("current auth trust level is supported");
} catch (error) {
    console.info("current auth trust level is not supported, error = " + error);
}
```
Y
youliang_1314 已提交
477 478 479

  ## ResultCodeV9<sup>9+</sup>

Y
youliang_1314 已提交
480
表示返回码的枚举。
Y
youliang_1314 已提交
481 482 483 484 485 486 487 488 489 490 491 492 493 494 495

**系统能力**:SystemCapability.UserIAM.UserAuth.Core

| 名称                    | 默认值 | 描述                 |
| ----------------------- | ------ | -------------------- |
| SUCCESS                 | 12500000      | 执行成功。           |
| FAIL                    | 12500001      | 执行失败。           |
| GENERAL_ERROR           | 12500002      | 操作通用错误。       |
| CANCELED                | 12500003      | 操作取消。           |
| TIMEOUT                 | 12500004      | 操作超时。           |
| TYPE_NOT_SUPPORT        | 12500005      | 不支持的认证类型。   |
| TRUST_LEVEL_NOT_SUPPORT | 12500006      | 不支持的认证等级。   |
| BUSY                    | 12500007      | 忙碌状态。           |
| LOCKED                  | 12500009      | 认证器已锁定。       |
| NOT_ENROLLED            | 12500010      | 用户未录入认证信息。 |
496 497

## UserAuth<sup>8+</sup>
Z
zengyawen 已提交
498

Y
youliang_1314 已提交
499
认证器对象。
Z
zengyawen 已提交
500

Y
youliang_1314 已提交
501
### constructor<sup>(deprecated)</sup>
Z
zengyawen 已提交
502

503
constructor()
504

Y
youliang_1314 已提交
505 506
创建认证器对象。

Y
youliang_1314 已提交
507 508 509 510
> **说明:**
> 从 API version 9 开始废弃,请使用[getAuthInstance](#useriam_userauthgetauthinstance9)替代。
<br/>从 API version 8 开始支持。

511
**系统能力**:SystemCapability.UserIAM.UserAuth.Core
H
https://gitee.com/WALL_EYE 已提交
512

513
**返回值:**
514

515 516
| 类型                   | 说明                 |
| ---------------------- | -------------------- |
Y
youliang_1314 已提交
517
| [UserAuth](#userauth8) | 认证器对象。 |
Z
zengyawen 已提交
518

519
**示例:**
520

Y
youliang_1314 已提交
521 522
```js
import userIAM_userAuth from '@ohos.userIAM.userAuth';
523

Y
youliang_1314 已提交
524 525
let auth = new userIAM_userAuth.UserAuth();
```
Z
zengyawen 已提交
526

Y
youliang_1314 已提交
527
### getVersion<sup>(deprecated)</sup>
Z
zengyawen 已提交
528

529
getVersion() : number
Z
zengyawen 已提交
530

Y
youliang_1314 已提交
531 532
获取认证器的版本信息。

Y
youliang_1314 已提交
533 534 535 536
> **说明:**
> 从 API version 9 开始废弃,请使用[getVersion](#useriam_userauthgetversion9)替代。
<br/>从 API version 8 开始支持。

H
https://gitee.com/WALL_EYE 已提交
537 538
**需要权限**:ohos.permission.ACCESS_BIOMETRIC

539
**系统能力**:SystemCapability.UserIAM.UserAuth.Core
H
https://gitee.com/WALL_EYE 已提交
540

541
**返回值:**
542

543 544
| 类型   | 说明                   |
| ------ | ---------------------- |
Y
youliang_1314 已提交
545
| number | 认证器版本信息。 |
546

547
**示例:**
Z
zengyawen 已提交
548

Y
youliang_1314 已提交
549 550
```js
import userIAM_userAuth from '@ohos.userIAM.userAuth';
551

Y
youliang_1314 已提交
552 553 554 555
let auth = new userIAM_userAuth.UserAuth();
let version = auth.getVersion();
console.info("auth version = " + version);
```
556

Y
youliang_1314 已提交
557
### getAvailableStatus<sup>(deprecated)</sup>
558

559
getAvailableStatus(authType : UserAuthType, authTrustLevel : AuthTrustLevel) : number
560

Y
youliang_1314 已提交
561 562
查询指定类型和等级的认证能力是否支持。

Y
youliang_1314 已提交
563
> **说明:**
Y
youliang_1314 已提交
564
> 从 API version 9 开始废弃,请使用[getAvailableStatus](#useriam_userauthgetavailablestatus9)替代。
Y
youliang_1314 已提交
565 566
<br/>从 API version 8 开始支持。

H
https://gitee.com/WALL_EYE 已提交
567 568
**需要权限**:ohos.permission.ACCESS_BIOMETRIC

569
**系统能力**:SystemCapability.UserIAM.UserAuth.Core
H
https://gitee.com/WALL_EYE 已提交
570

571
**参数:**
572

573
| 参数名称         | 类型                               | 必填 | 说明                       |
574 575
| -------------- | ---------------------------------- | ---- | -------------------------- |
| authType       | [UserAuthType](#userauthtype8)     | 是   | 认证类型,当前只支持FACE。 |
Y
youliang_1314 已提交
576
| authTrustLevel | [AuthTrustLevel](#authtrustlevel8) | 是   | 认证信任等级。       |
Z
zengyawen 已提交
577

578
**返回值:**
579

580 581
| 类型   | 说明                                                         |
| ------ | ------------------------------------------------------------ |
Y
youliang_1314 已提交
582
| number | 查询结果,结果为SUCCESS时表示支持,其他返回值参见[ResultCode](#resultcodedeprecated)。 |
Z
zengyawen 已提交
583

584
**示例:**
585

Y
youliang_1314 已提交
586 587 588 589 590 591 592 593 594 595 596
```js
import userIAM_userAuth from '@ohos.userIAM.userAuth';

let auth = new userIAM_userAuth.UserAuth();
let checkCode = auth.getAvailableStatus(userIAM_userAuth.UserAuthType.FACE, userIAM_userAuth.AuthTrustLevel.ATL1);
if (checkCode == userIAM_userAuth.ResultCode.SUCCESS) {
    console.info("check auth support success");
} else {
    console.error("check auth support fail, code = " + checkCode);
}
```
Z
zengyawen 已提交
597

Y
youliang_1314 已提交
598
### auth<sup>(deprecated)</sup>
Z
zengyawen 已提交
599

600
auth(challenge: Uint8Array, authType: UserAuthType, authTrustLevel: AuthTrustLevel, callback: IUserAuthCallback): Uint8Array
Z
zengyawen 已提交
601

Y
youliang_1314 已提交
602 603
执行用户认证,使用回调函数返回结果。

Y
youliang_1314 已提交
604 605 606 607
> **说明:**
> 从 API version 9 开始废弃,建议使用[start](#start9)代替。
<br/>从 API version 8 开始支持。

H
https://gitee.com/WALL_EYE 已提交
608 609
**需要权限**:ohos.permission.ACCESS_BIOMETRIC

610
**系统能力**:SystemCapability.UserIAM.UserAuth.Core
H
https://gitee.com/WALL_EYE 已提交
611

612
**参数:**
613

614
| 参数名称         | 类型                                     | 必填 | 说明                     |
615 616 617
| -------------- | ---------------------------------------- | ---- | ------------------------ |
| challenge      | Uint8Array                               | 是   | 挑战值,可以填null。     |
| authType       | [UserAuthType](#userauthtype8)           | 是   | 认证类型,当前支持FACE。 |
618 619
| authTrustLevel | [AuthTrustLevel](#authtrustlevel8)       | 是   | 认证信任等级。             |
| callback       | [IUserAuthCallback](#iuserauthcallbackdeprecated) | 是   | 回调函数。        |
620

621
**返回值:**
622

623 624
| 类型       | 说明                                                         |
| ---------- | ------------------------------------------------------------ |
Y
youliang_1314 已提交
625
| Uint8Array | ContextId,作为取消认证[cancelAuth](#cancelauthdeprecated)接口的入参。 |
Z
zengyawen 已提交
626

627
**示例:**
Z
zengyawen 已提交
628

Y
youliang_1314 已提交
629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648
```js
import userIAM_userAuth from '@ohos.userIAM.userAuth';

let auth = new userIAM_userAuth.UserAuth();
auth.auth(null, userIAM_userAuth.UserAuthType.FACE, userIAM_userAuth.AuthTrustLevel.ATL1, {
    onResult: (result, extraInfo) => {
        try {
            console.info("auth onResult result = " + result);
            console.info("auth onResult extraInfo = " + JSON.stringify(extraInfo));
            if (result == userIAM_userAuth.ResultCode.SUCCESS) {
                // 此处添加认证成功逻辑
            } else {
                // 此处添加认证失败逻辑
            }
        } catch (e) {
            console.info("auth onResult error = " + e);
        }
    }
});
```
Z
zengyawen 已提交
649

Y
youliang_1314 已提交
650
### cancelAuth<sup>(deprecated)</sup>
Z
zengyawen 已提交
651

652
cancelAuth(contextID : Uint8Array) : number
Z
zengyawen 已提交
653

Y
youliang_1314 已提交
654 655
表示通过contextID取消本次认证操作。

Y
youliang_1314 已提交
656 657 658 659
> **说明:**
> 从 API version 9 开始废弃,建议使用[cancel](#cancel9)代替。
<br/>从 API version 8 开始支持。

H
https://gitee.com/WALL_EYE 已提交
660 661
**需要权限**:ohos.permission.ACCESS_BIOMETRIC

662
**系统能力**:SystemCapability.UserIAM.UserAuth.Core
H
https://gitee.com/WALL_EYE 已提交
663

664
**参数:**
665

666
| 参数名称    | 类型       | 必填 | 说明                                       |
667
| --------- | ---------- | ---- | ------------------------------------------ |
Y
youliang_1314 已提交
668
| contextID | Uint8Array | 是   | 上下文的标识,通过[auth](#authdeprecated)接口获取。 |
669

670
**返回值:**
671

672 673
| 类型   | 说明                     |
| ------ | ------------------------ |
Y
youliang_1314 已提交
674
| number | 取消认证的结果,结果为SUCCESS时表示取消成功,其他返回值参见[ResultCode](#resultcodedeprecated)。 |
Z
zengyawen 已提交
675

676
**示例:**
677

Y
youliang_1314 已提交
678 679 680 681 682 683 684 685 686 687 688 689 690
```js
import userIAM_userAuth from '@ohos.userIAM.userAuth';

// contextId可通过auth接口获取,此处直接定义
let contextId = new Uint8Array([0, 1, 2, 3, 4, 5, 6, 7]);
let auth = new userIAM_userAuth.UserAuth();
let cancelCode = auth.cancelAuth(contextId);
if (cancelCode == userIAM_userAuth.ResultCode.SUCCESS) {
    console.info("cancel auth success");
} else {
    console.error("cancel auth fail");
}
```
691

Y
youliang_1314 已提交
692 693
## IUserAuthCallback<sup>(deprecated)</sup>

Y
youliang_1314 已提交
694 695
返回认证结果的回调对象。

Y
youliang_1314 已提交
696 697 698
> **说明:**
> 从 API version 9 开始废弃,建议使用[AuthEvent](#authevent9)代替。
<br/>从 API version 8 开始支持。
699

Y
youliang_1314 已提交
700
### onResult<sup>(deprecated)</sup>
701

702
onResult: (result : number, extraInfo : AuthResult) => void
703

Y
youliang_1314 已提交
704 705
回调函数,返回认证结果。

Y
youliang_1314 已提交
706 707 708 709
> **说明:**
> 从 API version 9 开始废弃,建议使用[callback](#callback9)代替。
<br/>从 API version 8 开始支持。

710
**系统能力**:SystemCapability.UserIAM.UserAuth.Core
H
https://gitee.com/WALL_EYE 已提交
711

712
**参数:**
713

714 715 716
| 参数名称    | 类型                       | 必填 | 说明        |
| --------- | -------------------------- | ---- | ------------------------------------------------ |
| result    | number           | 是   | 认证结果,参见[ResultCode](#resultcodedeprecated)。 |
Y
youliang_1314 已提交
717
| extraInfo | [AuthResult](#authresultdeprecated) | 是   | 扩展信息,不同情况下的具体信息,<br/>如果身份验证通过,则在extraInfo中返回用户认证令牌,<br/>如果身份验证失败,则在extraInfo中返回剩余的用户认证次数,<br/>如果身份验证执行器被锁定,则在extraInfo中返回冻结时间。 |
718 719


720
**示例:**
721

Y
youliang_1314 已提交
722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741
```js
import userIAM_userAuth from '@ohos.userIAM.userAuth';

let auth = new userIAM_userAuth.UserAuth();
auth.auth(null, userIAM_userAuth.UserAuthType.FACE, userIAM_userAuth.AuthTrustLevel.ATL1, {
    onResult: (result, extraInfo) => {
        try {
            console.info("auth onResult result = " + result);
            console.info("auth onResult extraInfo = " + JSON.stringify(extraInfo));
            if (result == userIAM_userAuth.ResultCode.SUCCESS) {
                // 此处添加认证成功逻辑
            }  else {
                // 此处添加认证失败逻辑
            }
        } catch (e) {
            console.info("auth onResult error = " + e);
        }
    }
});
```
Z
zengyawen 已提交
742

Y
youliang_1314 已提交
743
### onAcquireInfo<sup>(deprecated)</sup>
Z
zengyawen 已提交
744

745
onAcquireInfo ?: (module : number, acquire : number, extraInfo : any) => void
Z
zengyawen 已提交
746

Y
youliang_1314 已提交
747 748
回调函数,返回认证过程中的提示信息,非必须实现。

Y
youliang_1314 已提交
749 750 751 752
> **说明:**
> 从 API version 9 开始废弃,建议使用[callback](#callback9)代替。
<br/>从 API version 8 开始支持。

753
**系统能力**:SystemCapability.UserIAM.UserAuth.Core
H
https://gitee.com/WALL_EYE 已提交
754

755
**参数:**
Z
zengyawen 已提交
756

757
| 参数名称    | 类型   | 必填 | 说明                           |
758
| --------- | ------ | ---- | ------------------------------ |
Y
youliang_1314 已提交
759 760
| module    | number | 是   | 发送提示信息的模块标识。             |
| acquire   | number | 是   | 认证执过程中的提示信息。 |
761
| extraInfo | any    | 是   | 预留字段。                     |
Z
zengyawen 已提交
762

763
**示例:**
Z
zengyawen 已提交
764

Y
youliang_1314 已提交
765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780
```js
import userIAM_userAuth from '@ohos.userIAM.userAuth';

let auth = new userIAM_userAuth.UserAuth();
auth.auth(null, userIAM_userAuth.UserAuthType.FACE, userIAM_userAuth.AuthTrustLevel.ATL1, {
    onAcquireInfo: (module, acquire, extraInfo) => {
        try {
            console.info("auth onAcquireInfo module = " + module);
            console.info("auth onAcquireInfo acquire = " + acquire);
            console.info("auth onAcquireInfo extraInfo = " + JSON.stringify(extraInfo));
        } catch (e) {
            console.info("auth onAcquireInfo error = " + e);
        }
    }
});
```
781

Y
youliang_1314 已提交
782 783
## AuthResult<sup>(deprecated)</sup>

Y
youliang_1314 已提交
784 785
表示认证结果的对象。

Y
youliang_1314 已提交
786 787 788
> **说明:**
> 从 API version 9 开始废弃,建议使用[AuthResultInfo](#authresultinfo9)代替。
<br/>从 API version 8 开始支持。
Z
zengyawen 已提交
789

790
**系统能力**:SystemCapability.UserIAM.UserAuth.Core
H
https://gitee.com/WALL_EYE 已提交
791

792 793
| 名称         | 参数类型   | 必填 | 说明                 |
| ------------ | ---------- | ---- | -------------------- |
Y
youliang_1314 已提交
794
| token        | Uint8Array | 否   | 认证通过的令牌信息。       |
795 796 797
| remainTimes  | number     | 否   | 剩余的认证操作次数。 |
| freezingTime | number     | 否   | 认证操作的冻结时间。 |

Y
youliang_1314 已提交
798 799
## ResultCode<sup>(deprecated)</sup>

Y
youliang_1314 已提交
800 801
表示返回码的枚举。

Y
youliang_1314 已提交
802 803
> **说明:**
> 从 API version 9 开始废弃,建议使用[ResultCodeV9](#resultcodev99)代替。
Z
zengyawen 已提交
804

805
**系统能力**:SystemCapability.UserIAM.UserAuth.Core
H
https://gitee.com/WALL_EYE 已提交
806

807 808 809 810 811 812 813 814 815 816 817 818
| 名称                    | 默认值 | 描述                 |
| ----------------------- | ------ | -------------------- |
| SUCCESS                 | 0      | 执行成功。           |
| FAIL                    | 1      | 执行失败。           |
| GENERAL_ERROR           | 2      | 操作通用错误。       |
| CANCELED                | 3      | 操作取消。           |
| TIMEOUT                 | 4      | 操作超时。           |
| TYPE_NOT_SUPPORT        | 5      | 不支持的认证类型。   |
| TRUST_LEVEL_NOT_SUPPORT | 6      | 不支持的认证等级。   |
| BUSY                    | 7      | 忙碌状态。           |
| LOCKED                  | 9      | 认证器已锁定。       |
| NOT_ENROLLED            | 10     | 用户未录入认证信息。 |
Z
zengyawen 已提交
819

820
## FaceTips<sup>8+</sup>
Z
zengyawen 已提交
821

822
表示人脸认证过程中提示码的枚举。
Z
zengyawen 已提交
823

824
**系统能力**:SystemCapability.UserIAM.UserAuth.Core
H
https://gitee.com/WALL_EYE 已提交
825

826 827 828 829 830 831 832 833 834 835 836 837 838
| 名称                          | 默认值 | 描述                                 |
| ----------------------------- | ------ | ------------------------------------ |
| 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     | 没有检测到人脸信息。                 |
Z
zengyawen 已提交
839 840


841
## FingerprintTips<sup>8+</sup>
Z
zengyawen 已提交
842

843
表示指纹认证过程中提示码的枚举。
Z
zengyawen 已提交
844

845
**系统能力**:SystemCapability.UserIAM.UserAuth.Core
H
https://gitee.com/WALL_EYE 已提交
846

847 848 849 850 851 852 853 854
| 名称                              | 默认值 | 描述                                               |
| --------------------------------- | ------ | -------------------------------------------------- |
| FINGERPRINT_AUTH_TIP_GOOD         | 0      | 获取的指纹图像良好。                               |
| FINGERPRINT_AUTH_TIP_DIRTY        | 1      | 由于传感器上可疑或检测到的污垢,指纹图像噪音过大。 |
| FINGERPRINT_AUTH_TIP_INSUFFICIENT | 2      | 由于检测到的情况,指纹图像噪声太大,无法处理。     |
| FINGERPRINT_AUTH_TIP_PARTIAL      | 3      | 仅检测到部分指纹图像。                             |
| FINGERPRINT_AUTH_TIP_TOO_FAST     | 4      | 快速移动,指纹图像不完整。                         |
| FINGERPRINT_AUTH_TIP_TOO_SLOW     | 5      | 缺少运动,指纹图像无法读取。                       |
Z
zengyawen 已提交
855 856


857
## UserAuthType<sup>8+</sup>
Z
zengyawen 已提交
858

859
表示身份认证的凭据类型枚举。
Z
zengyawen 已提交
860

861
**系统能力**:SystemCapability.UserIAM.UserAuth.Core
H
https://gitee.com/WALL_EYE 已提交
862

863 864 865
| 名称        | 默认值 | 描述       |
| ----------- | ------ | ---------- |
| FACE        | 2      | 人脸认证。 |
866 867
| FINGERPRINT | 4      | 指纹认证。 |

868
## AuthTrustLevel<sup>8+</sup>
869 870 871

表示认证结果的信任等级枚举。

872
**系统能力**:SystemCapability.UserIAM.UserAuth.Core
H
https://gitee.com/WALL_EYE 已提交
873

874 875 876 877 878
| 名称 | 默认值 | 描述                      |
| ---- | ------ | ------------------------- |
| ATL1 | 10000  | 认证结果的信任等级级别1。 |
| ATL2 | 20000  | 认证结果的信任等级级别2。 |
| ATL3 | 30000  | 认证结果的信任等级级别3。 |
879 880 881 882 883 884
| ATL4 | 40000  | 认证结果的信任等级级别4。 |

## userIAM_userAuth.getAuthenticator<sup>(deprecated)</sup>

getAuthenticator(): Authenticator

Y
youliang_1314 已提交
885 886
获取Authenticator对象,用于执行用户身份认证。

887
> **说明:**
Y
youliang_1314 已提交
888
> 从 API version 8 开始废弃,建议使用[constructor](#constructordeprecated)替代。
889 890 891 892

**系统能力**:SystemCapability.UserIAM.UserAuth.Core

**返回值:**
893

894 895 896 897 898 899 900 901 902 903 904 905 906
| 类型                                      | 说明         |
| ----------------------------------------- | ------------ |
| [Authenticator](#authenticatordeprecated) | 认证器对象。 |

**示例:**
  ```js
  let authenticator = userIAM_userAuth.getAuthenticator();
  ```

## Authenticator<sup>(deprecated)</sup>

认证器对象。

Y
youliang_1314 已提交
907 908
> **说明:**
> 从 API version 8 开始废弃,建议使用[UserAuth](#userauth8)替代。
909 910 911

### execute<sup>(deprecated)</sup>

Y
youliang_1314 已提交
912
execute(type: AuthType, level: SecureLevel, callback: AsyncCallback&lt;number&gt;): void
913

Y
youliang_1314 已提交
914 915
执行用户认证,使用callback方式作为异步方法。

916
> **说明:**
Y
youliang_1314 已提交
917
> 从 API version 8 开始废弃,建议使用[auth](#authdeprecated)替代。
918 919 920 921 922 923 924

**需要权限**:ohos.permission.ACCESS_BIOMETRIC

**系统能力**:SystemCapability.UserIAM.UserAuth.Core

**参数:**

925 926
| 参数名称   | 类型                        | 必填 | 说明                      |
| -------- | --------------------------- | ---- | -------------------------- |
Y
youliang_1314 已提交
927
| type     | AuthType                      | 是   | 认证类型,当前只支持"FACE_ONLY"。<br/>ALL为预留参数,当前版本暂不支持ALL类型的认证。 |
928 929
| level    | SecureLevel  | 是   | 安全级别,对应认证的安全级别,有效值为"S1"(最低)、"S2"、"S3"、"S4"(最高)。<br/>具备3D人脸识别能力的设备支持"S3"及以下安全级别的认证。<br/>具备2D人脸识别能力的设备支持"S2"及以下安全级别的认证。 |
| callback | AsyncCallback&lt;number&gt; | 否   | 回调函数。    |
930

931
callback返回值:
932 933 934 935 936 937

| 类型   | 说明                                                         |
| ------ | ------------------------------------------------------------ |
| number | 表示认证结果,参见[AuthenticationResult](#authenticationresultdeprecated)。 |

**示例:**
Y
youliang_1314 已提交
938 939 940 941 942 943 944 945 946 947 948

```js
let authenticator = userIAM_userAuth.getAuthenticator();
authenticator.execute("FACE_ONLY", "S2", (error, code)=>{
    if (code === userIAM_userAuth.ResultCode.SUCCESS) {
        console.info("auth success");
        return;
    }
    console.error("auth fail, code = " + code);
});
```
949 950 951 952


### execute<sup>(deprecated)</sup>

Y
youliang_1314 已提交
953 954 955
execute(type : AuthType, level : SecureLevel): Promise&lt;number&gt;

执行用户认证,使用promise方式作为异步方法。
956 957

> **说明:**
Y
youliang_1314 已提交
958
> 从 API version 8 开始废弃,建议使用[auth](#authdeprecated)替代。
959 960 961 962 963 964

**需要权限**:ohos.permission.ACCESS_BIOMETRIC

**系统能力**:SystemCapability.UserIAM.UserAuth.Core

**参数:**
965

966
| 参数名称 | 类型   | 必填 | 说明                                                         |
967
| ------ | ------ | ---- | ------------------------------------------------------------ |
Y
youliang_1314 已提交
968 969
| type   | AuthType | 是   | 认证类型,当前只支持"FACE_ONLY"。<br/>ALL为预留参数,当前版本暂不支持ALL类型的认证。 |
| level  | SecureLevel | 是   | 安全级别,对应认证的安全级别,有效值为"S1"(最低)、"S2"、"S3"、"S4"(最高)。<br/>具备3D人脸识别能力的设备支持"S3"及以下安全级别的认证。<br/>具备2D人脸识别能力的设备支持"S2"及以下安全级别的认证。 |
970 971

**返回值:**
972

973 974 975 976 977 978
| 类型                  | 说明                                                         |
| --------------------- | ------------------------------------------------------------ |
| Promise&lt;number&gt; | 返回携带一个number的Promise。number&nbsp;为认证结果,参见[AuthenticationResult](#authenticationresultdeprecated)。 |

**示例:**

Y
youliang_1314 已提交
979 980 981 982 983 984 985 986
```js
let authenticator = userIAM_userAuth.getAuthenticator();
authenticator.execute("FACE_ONLY", "S2").then((code)=>{
    console.info("auth success");
}).catch((error)=>{
    console.error("auth fail, code = " + error);
});
```
987 988 989

## AuthenticationResult<sup>(deprecated)</sup>

Y
youliang_1314 已提交
990 991
表示认证结果的枚举。

992
> **说明:**
Y
youliang_1314 已提交
993
> 从 API version 8 开始废弃,建议使用[ResultCode](#resultcodedeprecated)替代。
994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008

**系统能力**:SystemCapability.UserIAM.UserAuth.Core

| 名称               | 默认值 | 描述                       |
| ------------------ | ------ | -------------------------- |
| 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      | 未录入认证凭据。           |
Y
youliang_1314 已提交
1009
| GENERAL_ERROR      | 100    | 其他错误。                 |