js-apis-useriam-userauth.md 57.2 KB
Newer Older
Z
zengyawen 已提交
1
# @ohos.userIAM.userAuth (用户认证)
Z
zengyawen 已提交
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';
```

L
liuziwei 已提交
15 16
## WindowModeType<sup>10+</sup>

L
fix  
liuziweicom 已提交
17
用户认证界面的显示类型。
L
liuziwei 已提交
18 19 20

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

L
fix  
liuziweicom 已提交
21 22
**系统API**: 此接口为系统接口。

L
liuziwei 已提交
23 24 25
| 名称       | 值   | 说明       |
| ---------- | ---- | ---------- |
| DIALOG_BOX | 1    | 弹框类型。 |
26
| FULLSCREEN | 2    | 全屏类型。 |
L
liuziwei 已提交
27 28 29 30 31 32 33

## AuthParam<sup>10+</sup>

用户认证相关参数。

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

L
fix  
liuziweicom 已提交
34 35 36 37 38
| 名称           | 类型                               | 必填 | 说明                                                   |
| -------------- | ---------------------------------- | ---- | ------------------------------------------------------ |
| challenge      | Uint8Array                         | 是   | 挑战值,用来防重放攻击。最大长度为32字节,可以填null。 |
| authType       | [UserAuthType](#userauthtype8)[]   | 是   | 认证类型列表,用来指定用户认证界面提供的认证方法。     |
| authTrustLevel | [AuthTrustLevel](#authtrustlevel8) | 是   | 认证信任等级。                                         |
L
liuziwei 已提交
39 40 41

## WidgetParam<sup>10+</sup>

L
fix  
liuziweicom 已提交
42
用户认证界面配置相关参数。
L
liuziwei 已提交
43 44 45

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

L
liuziweicom 已提交
46 47 48 49 50
| 名称                 | 类型                                | 必填 | 说明                                    |
| -------------------- | ----------------------------------- | ---- | --------------------------------------- |
| title                | string                              | 是   | 用户认证界面的标题,最大长度为500字符。 |
| navigationButtonText | string                              | 否   | 导航按键的说明文本,最大长度为60字符。  |
| windowModeType       | [WindowModeType](#windowmodetype10) | 否   | 用户认证界面的显示类型。                |
L
liuziwei 已提交
51

52
## UserAuthResult<sup>10+</sup>
L
liuziwei 已提交
53

L
fix  
liuziweicom 已提交
54
用户认证结果。当认证结果为成功时,返回认证类型和认证通过的令牌信息。
L
liuziwei 已提交
55 56 57

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

58 59
| 名称     | 类型                           | 必填 | 说明                                                         |
| -------- | ------------------------------ | ---- | ------------------------------------------------------------ |
L
add  
liuziwei 已提交
60
| result   | number                         | 是   | 用户认证结果。若结果为成功返回0,若失败返回相应错误码,错误码详细介绍请参见[用户认证错误码](../errorcodes/errorcode-useriam.md)。 |
L
fix  
liuziweicom 已提交
61 62
| token    | Uint8Array                     | 否   | 当认证结果为成功时,返回认证通过的令牌信息。                 |
| authType | [UserAuthType](#userauthtype8) | 否   | 当认证结果为成功时,返回认证类型。                           |
63

L
liuziwei 已提交
64 65 66 67 68 69 70

## IAuthCallback<sup>10+</sup>

返回认证结果的回调对象。

### onResult<sup>10+</sup>

71
onResult(result: UserAuthResult): void
L
liuziwei 已提交
72 73 74 75 76 77 78

回调函数,返回认证结果。

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

**参数:**

L
fix  
liuziweicom 已提交
79 80 81
| 参数名 | 类型                                | 必填 | 说明       |
| ------ | ----------------------------------- | ---- | ---------- |
| result | [UserAuthResult](#userauthresult10) | 是   | 认证结果。 |
L
liuziwei 已提交
82 83 84 85

**示例:**

```js
L
fix  
liuziweicom 已提交
86 87 88 89 90 91 92 93
import userAuth from '@ohos.userIAM.userAuth';

const authParam = {
    challenge: new Uint8Array([49, 49, 49, 49, 49, 49]),
    authType: [userAuth.UserAuthType.PIN],
    authTrustLevel: 10000,
};
const widgetParam = {
L
liuziweicom 已提交
94
	title: '请输入密码',
L
fix  
liuziweicom 已提交
95 96 97
	navigationButtonText: '返回',
    windowMode: userAuth.WindowModeType.DIALOG_BOX,
};
L
liuziwei 已提交
98
try {
L
liuziweicom 已提交
99
    let userAuthInstance = userAuth.getUserAuthInstance(authParam, widgetParam);
L
fix  
liuziweicom 已提交
100
    console.log('get userAuth instance success');
L
liuziwei 已提交
101
    userAuthInstance.on('result', {
L
liuziweicom 已提交
102 103 104
        onResult (result) {
            console.log('userAuthInstance callback result = ' + JSON.stringify(result));
        }
L
fix  
liuziweicom 已提交
105 106
    });
    console.log('auth on success');
L
liuziwei 已提交
107
} catch (error) {
L
fix  
liuziweicom 已提交
108
    console.log('auth catch error: ' + JSON.stringify(error));
L
liuziwei 已提交
109 110 111 112 113
}
```

## UserAuthInstance<sup>10+</sup>

114
用于执行用户身份认证,并支持使用统一用户身份认证组件。
L
fix  
liuziweicom 已提交
115
使用以下接口前,都需要先通过[getUserAuthInstance](#getuserauthinstance10)方法获取UserAuthInstance对象。
L
liuziwei 已提交
116 117 118

### on<sup>10+</sup>

119
on(type: 'result', callback: IAuthCallback): void
L
liuziwei 已提交
120 121 122 123 124 125 126

订阅用户身份认证结果。

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

**参数:**

L
fix  
liuziweicom 已提交
127 128 129 130
| 参数名   | 类型                              | 必填 | 说明                                       |
| -------- | --------------------------------- | ---- | ------------------------------------------ |
| type     | 'result'                          | 是   | 订阅事件类型,表明该事件用来返回认证结果。 |
| callback | [IAuthCallback](#iauthcallback10) | 是   | 认证接口的回调函数,用于返回认证结果。     |
L
liuziwei 已提交
131 132 133

**错误码:**

134 135
以下错误码的详细介绍请参见[用户认证错误码](../errorcodes/errorcode-useriam.md)

L
liuziwei 已提交
136 137 138 139 140 141 142 143
| 错误码ID | 错误信息                 |
| -------- | ------------------------ |
| 401      | Incorrect parameters.    |
| 12500002 | General operation error. |

**示例:**

```js
L
fix  
liuziweicom 已提交
144 145 146 147 148 149 150 151
import userAuth from '@ohos.userIAM.userAuth';

const authParam = {
    challenge: new Uint8Array([49, 49, 49, 49, 49, 49]),
    authType: [userAuth.UserAuthType.PIN],
    authTrustLevel: 10000,
};
const widgetParam = {
L
liuziweicom 已提交
152
	title: '请输入密码',
L
fix  
liuziweicom 已提交
153 154 155
	navigationButtonText: '返回',
    windowMode: userAuth.WindowModeType.DIALOG_BOX,
};
L
liuziwei 已提交
156
try {
L
liuziweicom 已提交
157
    let userAuthInstance = userAuth.getUserAuthInstance(authParam, widgetParam);
L
fix  
liuziweicom 已提交
158
    console.log('get userAuth instance success');
L
liuziwei 已提交
159
    userAuthInstance.on('result', {
L
liuziweicom 已提交
160 161 162
        onResult (result) {
            console.log('userAuthInstance callback result = ' + JSON.stringify(result));
        }
L
fix  
liuziweicom 已提交
163 164
    });
    console.log('auth on success');
L
liuziwei 已提交
165
} catch (error) {
L
fix  
liuziweicom 已提交
166
    console.log('auth catch error: ' + JSON.stringify(error));
L
liuziwei 已提交
167 168 169 170 171
}
```

### off<sup>10+</sup>

172
off(type: 'result', callback?: IAuthCallback): void
L
liuziwei 已提交
173 174 175

取消订阅用户身份认证结果。

L
add  
liuziwei 已提交
176
> **说明**:需要使用已经成功订阅事件的[UserAuthInstance](#userauthinstance10)对象调用该接口进行取消订阅。
L
liuziwei 已提交
177 178 179 180 181

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

**参数:**

L
fix  
liuziweicom 已提交
182 183 184 185
| 参数名   | 类型                              | 必填 | 说明                                       |
| -------- | --------------------------------- | ---- | ------------------------------------------ |
| type     | 'result'                          | 是   | 订阅事件类型,表明该事件用来返回认证结果。 |
| callback | [IAuthCallback](#iauthcallback10) | 否   | 认证接口的回调函数,用于返回认证结果。     |
L
liuziwei 已提交
186 187 188

**错误码:**

189 190
以下错误码的详细介绍请参见[用户认证错误码](../errorcodes/errorcode-useriam.md)

L
liuziwei 已提交
191 192 193 194 195 196 197 198
| 错误码ID | 错误信息                 |
| -------- | ------------------------ |
| 401      | Incorrect parameters.    |
| 12500002 | General operation error. |

**示例:**

```js
L
fix  
liuziweicom 已提交
199 200 201 202 203 204 205 206
import userAuth from '@ohos.userIAM.userAuth';

const authParam = {
    challenge: new Uint8Array([49, 49, 49, 49, 49, 49]),
    authType: [userAuth.UserAuthType.PIN],
    authTrustLevel: 10000,
};
const widgetParam = {
L
liuziweicom 已提交
207
	title: '请输入密码',
L
fix  
liuziweicom 已提交
208 209 210
	navigationButtonText: '返回',
    windowMode: userAuth.WindowModeType.DIALOG_BOX,
};
L
liuziwei 已提交
211
try {
L
liuziweicom 已提交
212
    let userAuthInstance = userAuth.getUserAuthInstance(authParam, widgetParam);
L
fix  
liuziweicom 已提交
213 214
    console.log('get userAuth instance success');
	userAuthInstance.off('result', {
L
liuziweicom 已提交
215
        onResult (result) {
L
fix  
liuziweicom 已提交
216
            console.log('auth off result: ' + JSON.stringify(result));
L
liuziwei 已提交
217
        }
L
fix  
liuziweicom 已提交
218 219
    });
    console.log('auth off success');
L
liuziwei 已提交
220
} catch (error) {
L
fix  
liuziweicom 已提交
221
    console.log('auth catch error: ' + JSON.stringify(error));
L
liuziwei 已提交
222 223 224 225 226
}
```

### start<sup>10+</sup>

227
start(): void
L
liuziwei 已提交
228 229 230 231 232 233 234 235 236

开始认证。

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

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

**错误码:**

237 238
以下错误码的详细介绍请参见[用户认证错误码](../errorcodes/errorcode-useriam.md)

L
liuziwei 已提交
239 240 241 242 243 244 245 246 247 248 249 250 251
| 错误码ID | 错误信息                                         |
| -------- | ------------------------------------------------ |
| 201      | Permission verification failed.                  |
| 401      | Incorrect parameters.                            |
| 12500001 | Authentication failed.                           |
| 12500002 | General operation error.                         |
| 12500003 | The operation is canceled.                       |
| 12500004 | The operation is time-out.                       |
| 12500005 | The authentication type is not supported.        |
| 12500006 | The authentication trust level is not supported. |
| 12500007 | The authentication task is busy.                 |
| 12500009 | The authenticator is locked.                     |
| 12500010 | The type of credential has not been enrolled.    |
252
| 12500011 | The authentication is canceled from widget's navigation button.      |
L
liuziwei 已提交
253 254 255 256

**示例:**

```js
L
fix  
liuziweicom 已提交
257 258 259 260 261 262 263 264
import userAuth from '@ohos.userIAM.userAuth';

const authParam = {
    challenge: new Uint8Array([49, 49, 49, 49, 49, 49]),
    authType: [userAuth.UserAuthType.PIN],
    authTrustLevel: 10000,
};
const widgetParam = {
L
liuziweicom 已提交
265
	title: '请输入密码',
L
fix  
liuziweicom 已提交
266 267 268
	navigationButtonText: '返回',
    windowMode: userAuth.WindowModeType.DIALOG_BOX,
};
L
liuziwei 已提交
269
try {
L
liuziweicom 已提交
270
    let userAuthInstance = userAuth.getUserAuthInstance(authParam, widgetParam);
L
fix  
liuziweicom 已提交
271
    console.log('get userAuth instance success');
L
liuziwei 已提交
272
    userAuthInstance.start();
L
fix  
liuziweicom 已提交
273
    console.log('auth start success');
L
liuziwei 已提交
274
} catch (error) {
L
fix  
liuziweicom 已提交
275
    console.log('auth catch error: ' + JSON.stringify(error));
L
liuziwei 已提交
276 277 278 279 280
}
```

### cancel<sup>10+</sup>

281
cancel(): void
L
liuziwei 已提交
282 283 284

取消认证。

285
> **说明**:此时UserAuthInstance需要是正在进行认证的对象。
L
liuziwei 已提交
286 287 288 289 290 291 292

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

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

**错误码:**

293 294 295 296 297
| 错误码ID | 错误信息                        |
| -------- | ------------------------------- |
| 201      | Permission verification failed. |
| 401      | Incorrect parameters.           |
| 12500002 | General operation error.        |
L
liuziwei 已提交
298 299 300 301

**示例:**

```js
L
fix  
liuziweicom 已提交
302 303 304
import userAuth from '@ohos.userIAM.userAuth';

const authParam = {
L
liuziweicom 已提交
305 306 307
    challenge: new Uint8Array([49, 49, 49, 49, 49, 49]),
    authType: [userAuth.UserAuthType.PIN],
    authTrustLevel: 10000,
L
fix  
liuziweicom 已提交
308 309
};
const widgetParam = {
L
liuziweicom 已提交
310
	title: '请输入密码',
L
fix  
liuziweicom 已提交
311 312 313
	navigationButtonText: '返回',
    windowMode: userAuth.WindowModeType.DIALOG_BOX,
};
L
liuziwei 已提交
314
try {
L
liuziweicom 已提交
315
    let userAuthInstance = userAuth.getUserAuthInstance(authParam, widgetParam);
L
fix  
liuziweicom 已提交
316
    console.log('get userAuth instance success');
L
liuziwei 已提交
317
    userAuthInstance.cancel();
L
liuziweicom 已提交
318
    console.log('auth cancel success');
L
liuziwei 已提交
319
} catch (error) {
L
fix  
liuziweicom 已提交
320
    console.log('auth catch error: ' + JSON.stringify(error));
L
liuziwei 已提交
321 322 323
}
```

L
fix  
liuziweicom 已提交
324
## getUserAuthInstance<sup>10+</sup>
L
liuziwei 已提交
325

326
getUserAuthInstance(authParam: AuthParam, widgetParam: WidgetParam): UserAuthInstance
L
liuziwei 已提交
327

328
获取[UserAuthInstance](#userauthinstance10)对象,用于执行用户身份认证,并支持使用统一用户身份认证组件。
L
liuziwei 已提交
329 330 331 332 333 334

> **说明:**
> 每个UserAuthInstance只能进行一次认证,若需要再次进行认证则需重新获取UserAuthInstance。

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

L
fix  
liuziweicom 已提交
335 336
**系统API**: 此接口为系统接口。

L
liuziwei 已提交
337 338
**参数:**

L
fix  
liuziweicom 已提交
339 340 341 342
| 参数名      | 类型                          | 必填 | 说明                       |
| ----------- | ----------------------------- | ---- | -------------------------- |
| authParam   | [AuthParam](#authparam10)      | 是   | 用户认证相关参数。         |
| widgetParam | [WidgetParam](#widgetparam10) | 是   | 用户认证界面配置相关参数。 |
L
liuziwei 已提交
343 344 345

**返回值:**

L
fix  
liuziweicom 已提交
346 347 348
| 类型                                    | 说明                       |
| --------------------------------------- | -------------------------- |
| [UserAuthInstance](#userauthinstance10) | 支持用户界面的认证器对象。 |
L
liuziwei 已提交
349 350 351

**错误码:**

352 353
以下错误码的详细介绍请参见[用户认证错误码](../errorcodes/errorcode-useriam.md)

L
liuziwei 已提交
354 355 356 357 358 359 360 361 362 363
| 错误码ID | 错误信息                                         |
| -------- | ------------------------------------------------ |
| 401      | Incorrect parameters.                            |
| 12500002 | General operation error.                         |
| 12500005 | The authentication type is not supported.        |
| 12500006 | The authentication trust level is not supported. |

**示例:**

```js
L
fix  
liuziweicom 已提交
364 365 366
import userAuth from '@ohos.userIAM.userAuth';

const authParam = {
L
liuziweicom 已提交
367 368 369
    challenge: new Uint8Array([49, 49, 49, 49, 49, 49]),
    authType: [userAuth.UserAuthType.PIN],
    authTrustLevel: 10000,
L
fix  
liuziweicom 已提交
370 371
};
const widgetParam = {
L
liuziweicom 已提交
372
	title: '请输入密码',
L
fix  
liuziweicom 已提交
373 374 375
	navigationButtonText: '返回',
    windowMode: userAuth.WindowModeType.DIALOG_BOX,
};
L
liuziwei 已提交
376
try {
L
liuziweicom 已提交
377
    let userAuthInstance = userAuth.getUserAuthInstance(authParam, widgetParam);
L
fix  
liuziweicom 已提交
378
    console.log('get userAuth instance success');
L
liuziwei 已提交
379
} catch (error) {
L
fix  
liuziweicom 已提交
380
    console.log('auth catch error: ' + JSON.stringify(error));
L
liuziwei 已提交
381 382 383 384 385 386 387 388 389
}
```

## NoticeType<sup>10+</sup>

用户身份认证的通知类型。

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

L
fix  
liuziweicom 已提交
390 391
**系统API**: 此接口为系统接口。

L
liuziwei 已提交
392 393
| 名称          | 值   | 说明                 |
| ------------- | ---- | -------------------- |
394
| WIDGET_NOTICE | 1    | 表示来自组件的通知。 |
L
liuziwei 已提交
395

L
fix  
liuziweicom 已提交
396
## sendNotice<sup>10+</sup>
L
liuziwei 已提交
397

398
sendNotice(noticeType: NoticeType, eventData: string): void
L
liuziwei 已提交
399

400
在使用统一身份认证组件进行用户身份认证时,用于接收来自统一身份认证组件的通知。
L
liuziwei 已提交
401 402 403 404 405

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

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

L
fix  
liuziweicom 已提交
406 407
**系统API**: 此接口为系统接口。

L
liuziwei 已提交
408 409
**参数:**

L
fix  
liuziweicom 已提交
410 411 412 413
| 参数名     | 类型                        | 必填 | 说明       |
| ---------- | --------------------------- | ---- | ---------- |
| noticeType | [NoticeType](#noticetype10) | 是   | 通知类型。 |
| eventData  | string                      | 是   | 事件数据。 |
L
liuziwei 已提交
414 415 416

**错误码:**

417 418
以下错误码的详细介绍请参见[用户认证错误码](../errorcodes/errorcode-useriam.md)

L
liuziwei 已提交
419 420 421 422 423 424 425 426 427 428
| 错误码ID | 错误信息                                |
| -------- | --------------------------------------- |
| 201      | Permission verification failed.         |
| 202      | The caller is not a system application. |
| 401      | Incorrect parameters.                   |
| 12500002 | General operation error.                |

**示例:**

```js
L
fix  
liuziweicom 已提交
429
import userAuth from '@ohos.userIAM.userAuth';
L
liuziwei 已提交
430

L
fix  
liuziweicom 已提交
431 432 433 434 435 436 437
try {
    const eventData = {
        widgetContextId: 123456,
        event: 'EVENT_AUTH_TYPE_READY',
        version: '1',
        payload: {
            type: ['pin']
L
liuziweicom 已提交
438 439
        },
    };
L
fix  
liuziweicom 已提交
440 441
    const jsonEventData = JSON.stringify(eventData);
    let noticeType = userAuth.NoticeType.WIDGET_NOTICE;
L
liuziweicom 已提交
442
    userAuth.sendNotice(noticeType, jsonEventData);
L
fix  
liuziweicom 已提交
443 444 445 446
    console.log('sendNotice success');
} catch (error) {
    console.log('sendNotice catch error: ' + JSON.stringify(error));
}
L
liuziwei 已提交
447 448 449 450
```

## UserAuthWidgetMgr<sup>10+</sup>

451
组件管理接口,可将用身份认证组件注册到UserAuthWidgetMgr中,由UserAuthWidgetMgr进行管理、调度。
L
liuziwei 已提交
452 453 454

### on<sup>10+</sup>

455
on(type: 'command', callback: IAuthWidgetCallback): void
L
liuziwei 已提交
456

457
身份认证组件订阅来自用户认证框架的命令。
L
liuziwei 已提交
458 459 460

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

L
fix  
liuziweicom 已提交
461 462
**系统API**: 此接口为系统接口。

L
liuziwei 已提交
463 464 465 466
**参数:**

| 参数名   | 类型                                          | 必填 | 说明                                                         |
| -------- | --------------------------------------------- | ---- | ------------------------------------------------------------ |
467 468
| type     | 'command'                                     | 是   | 订阅事件类型,表明该事件用于用户认证框架向身份认证组件发送命令。 |
| callback | [IAuthWidgetCallback](#iauthwidgetcallback10) | 是   | 组件管理接口的回调函数,用于用户认证框架向身份认证组件发送命令。 |
L
liuziwei 已提交
469 470 471

**错误码:**

472 473
以下错误码的详细介绍请参见[用户认证错误码](../errorcodes/errorcode-useriam.md)

L
liuziwei 已提交
474 475 476 477 478 479 480 481
| 错误码ID | 错误信息                 |
| -------- | ------------------------ |
| 401      | Incorrect parameters.    |
| 12500002 | General operation error. |

**示例:**

```js
L
fix  
liuziweicom 已提交
482
import userAuth from '@ohos.userIAM.userAuth';
L
liuziwei 已提交
483

L
liuziweicom 已提交
484
const userAuthWidgetMgrVersion = 1;
L
liuziwei 已提交
485
try {
L
liuziweicom 已提交
486
    let userAuthWidgetMgr = userAuth.getUserAuthWidgetMgr(userAuthWidgetMgrVersion);
L
fix  
liuziweicom 已提交
487
    console.log('get userAuthWidgetMgr instance success');
L
liuziwei 已提交
488
    userAuthWidgetMgr.on('command', {
L
liuziweicom 已提交
489
    	sendCommand(cmdData) {
L
fix  
liuziweicom 已提交
490
            console.log('The cmdData is ' + cmdData);
L
liuziwei 已提交
491 492
        }
     })
L
fix  
liuziweicom 已提交
493
    console.log('subscribe authentication event success');
L
liuziwei 已提交
494
} catch (error) {
L
fix  
liuziweicom 已提交
495
    console.log('userAuth widgetMgr catch error: ' + JSON.stringify(error));
L
liuziwei 已提交
496 497 498 499 500
}
```

### off<sup>10+</sup>

501
off(type: 'command', callback?: IAuthWidgetCallback): void
L
liuziwei 已提交
502

503
身份认证组件取消订阅来自用户认证框架的命令。
L
liuziwei 已提交
504 505 506

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

L
fix  
liuziweicom 已提交
507 508
**系统API**: 此接口为系统接口。

L
liuziwei 已提交
509 510 511 512
**参数:**

| 参数名   | 类型                                          | 必填 | 说明                                                         |
| -------- | --------------------------------------------- | ---- | ------------------------------------------------------------ |
513 514
| type     | 'command'                                     | 是   | 订阅事件类型,表明该事件用于用户认证框架向身份认证组件发送命令。 |
| callback | [IAuthWidgetCallback](#iauthwidgetcallback10) | 否   | 组件管理接口的回调函数,用于用户认证框架向身份认证组件发送命令。 |
L
liuziwei 已提交
515 516 517

**错误码:**

518 519
以下错误码的详细介绍请参见[用户认证错误码](../errorcodes/errorcode-useriam.md)

L
liuziwei 已提交
520 521 522 523 524 525 526 527
| 错误码ID | 错误信息                 |
| -------- | ------------------------ |
| 401      | Incorrect parameters.    |
| 12500002 | General operation error. |

**示例:**

```js
L
fix  
liuziweicom 已提交
528
import userAuth from '@ohos.userIAM.userAuth';
L
liuziwei 已提交
529

L
liuziweicom 已提交
530
const userAuthWidgetMgrVersion = 1;
L
liuziwei 已提交
531
try {
L
liuziweicom 已提交
532 533 534 535
    let userAuthWidgetMgr = userAuth.getUserAuthWidgetMgr(userAuthWidgetMgrVersion);
    console.log('get userAuthWidgetMgr instance success');
    userAuthWidgetMgr.off('command', {
    	sendCommand(cmdData) {
L
fix  
liuziweicom 已提交
536
            console.log('The cmdData is ' + cmdData);
L
liuziwei 已提交
537 538
        }
     })
L
fix  
liuziweicom 已提交
539
    console.log('cancel subscribe authentication event success');
L
liuziwei 已提交
540
} catch (error) {
L
fix  
liuziweicom 已提交
541
    console.log('userAuth widgetMgr catch error: ' + JSON.stringify(error));
L
liuziwei 已提交
542 543 544
}
```

L
fix  
liuziweicom 已提交
545
## getUserAuthWidgetMgr<sup>10+</sup>
L
liuziwei 已提交
546

547
getUserAuthWidgetMgr(version: number): UserAuthWidgetMgr
L
liuziwei 已提交
548 549 550 551 552 553

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

> **说明:**
> 每个UserAuthInstance只能进行一次认证,若需要再次进行认证则需重新获取UserAuthInstance。

L
fix  
liuziweicom 已提交
554 555
**需要权限**:ohos.permission.SUPPORT_USER_AUTH

L
liuziwei 已提交
556 557
**系统能力**:SystemCapability.UserIAM.UserAuth.Core

L
fix  
liuziweicom 已提交
558 559
**系统API**: 此接口为系统接口。

L
liuziwei 已提交
560 561 562 563
**参数:**

| 参数名  | 类型   | 必填 | 说明                 |
| ------- | ------ | ---- | -------------------- |
564
| version | number | 是   | 表示认证组件的版本。 |
L
liuziwei 已提交
565 566 567 568 569 570 571 572 573

**返回值:**

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

**错误码:**

574 575
以下错误码的详细介绍请参见[用户认证错误码](../errorcodes/errorcode-useriam.md)

L
liuziwei 已提交
576 577 578 579 580 581 582 583 584 585
| 错误码ID | 错误信息                                |
| -------- | --------------------------------------- |
| 201      | Permission verification failed.         |
| 202      | The caller is not a system application. |
| 401      | Incorrect parameters.                   |
| 12500002 | General operation error.                |

**示例:**

```js
L
fix  
liuziweicom 已提交
586
import userAuth from '@ohos.userIAM.userAuth';
L
liuziwei 已提交
587

L
liuziweicom 已提交
588
let userAuthWidgetMgrVersion = 1;
L
liuziwei 已提交
589
try {
L
liuziweicom 已提交
590
    let userAuthWidgetMgr = userAuth.getUserAuthWidgetMgr(userAuthWidgetMgrVersion);
L
fix  
liuziweicom 已提交
591
    console.log('get userAuthWidgetMgr instance success');   
L
liuziwei 已提交
592
} catch (error) {
L
fix  
liuziweicom 已提交
593
    console.log('userAuth widgetMgr catch error: ' + JSON.stringify(error));
L
liuziwei 已提交
594 595 596 597 598
}
```

## IAuthWidgetCallback<sup>10+</sup>

599
认证组件通过该回调获取用户认证框架发送的命令。
L
liuziwei 已提交
600 601 602

### sendCommand<sup>10+</sup>

603
sendCommand(cmdData: string): void
L
liuziwei 已提交
604

605
回调函数,用于用户认证框架向组件发送命令。
L
liuziwei 已提交
606 607 608

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

L
fix  
liuziweicom 已提交
609 610
**系统API**: 此接口为系统接口。

L
liuziwei 已提交
611 612 613 614
**参数:**

| 参数名  | 类型   | 必填 | 说明                               |
| ------- | ------ | ---- | ---------------------------------- |
615
| cmdData | string | 是   | 用户身份认证框架向组件发送的命令。 |
L
liuziwei 已提交
616 617 618 619

**示例:**

```js
L
fix  
liuziweicom 已提交
620
import userAuth from '@ohos.userIAM.userAuth';
L
liuziwei 已提交
621

L
liuziweicom 已提交
622
const userAuthWidgetMgrVersion = 1;
L
liuziwei 已提交
623
try {
L
liuziweicom 已提交
624
    let userAuthWidgetMgr = userAuth.getUserAuthWidgetMgr(userAuthWidgetMgrVersion);
L
fix  
liuziweicom 已提交
625
    console.log('get userAuthWidgetMgr instance success');
L
liuziwei 已提交
626
    userAuthWidgetMgr.on('command', {
L
liuziweicom 已提交
627
    	sendCommand(cmdData) {
L
fix  
liuziweicom 已提交
628
            console.log('The cmdData is ' + cmdData);
L
liuziwei 已提交
629 630
        }
     })
L
fix  
liuziweicom 已提交
631
    console.log('subscribe authentication event success');
L
liuziwei 已提交
632
} catch (error) {
L
fix  
liuziweicom 已提交
633
    console.log('userAuth widgetMgr catch error: ' + JSON.stringify(error));
L
liuziwei 已提交
634 635 636
}
```

Y
youliang_1314 已提交
637 638 639 640
## AuthResultInfo<sup>9+</sup>

表示认证结果信息。

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

Y
youliang_1314 已提交
643
| 名称         | 类型   | 必填 | 说明                 |
Y
youliang_1314 已提交
644 645 646
| ------------ | ---------- | ---- | -------------------- |
| result        | number | 是   | 认证结果。       |
| token        | Uint8Array | 否   | 用户身份认证通过的凭证。 |
J
JDfaker 已提交
647 648
| remainAttempts  | number     | 否   | 剩余的认证尝试次数。 |
| lockoutDuration | number     | 否   | 认证操作的锁定时长,时间单位为毫秒ms。 |
Y
youliang_1314 已提交
649 650 651 652 653 654 655

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

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

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

Y
youliang_1314 已提交
656
| 名称         | 类型   | 必填 | 说明                 |
Y
youliang_1314 已提交
657 658 659 660
| ------------ | ---------- | ---- | -------------------- |
| module        | number | 是   | 发送提示信息的模块标识。       |
| tip        | number | 是   | 认证过程提示信息。       |

Y
youliang_1314 已提交
661 662
## EventInfo<sup>9+</sup>

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

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

Y
youliang_1314 已提交
667
| 取值类型    | 说明                       |
Y
youliang_1314 已提交
668
| --------- | ----------------------- |
669 670
| [AuthResultInfo](#authresultinfo9)    | 获取到的认证结果信息。  |
| [TipInfo](#tipinfo9)    | 认证过程中的提示信息。      |
Y
youliang_1314 已提交
671

Y
youliang_1314 已提交
672 673
## AuthEventKey<sup>9+</sup>

674
表示认证事件类型的关键字,作为[on](#ondeprecated)接口的的参数。
Y
youliang_1314 已提交
675

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

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

Y
youliang_1314 已提交
683 684
## AuthEvent<sup>9+</sup>

Y
youliang_1314 已提交
685
认证接口的异步回调对象。
Y
youliang_1314 已提交
686 687 688

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

Y
youliang_1314 已提交
689
callback(result : EventInfo) : void
Y
youliang_1314 已提交
690

Y
youliang_1314 已提交
691
通过该回调获取认证结果信息或认证过程中的提示信息。
Y
youliang_1314 已提交
692 693 694 695 696

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

**参数:**

Y
youliang_1314 已提交
697
| 参数名    | 类型                       | 必填 | 说明                           |
698 699
| --------- | -------------------------- | ---- | ------------------------------ |
| result    | [EventInfo](#eventinfo9)     | 是   | 返回的认证结果信息或提示信息。  |
Y
youliang_1314 已提交
700 701 702

**示例:**

Y
youliang_1314 已提交
703 704 705 706 707 708 709 710 711 712
```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 已提交
713 714 715 716 717 718
        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 已提交
719 720 721 722 723 724 725 726 727 728 729
    });
    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", {
730 731 732 733 734 735 736 737 738
        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 已提交
739
        }
Y
youliang_1314 已提交
740 741 742 743 744 745 746 747
    });
    auth.start();
    console.log("authV9 start success");
} catch (error) {
    console.log("authV9 error = " + error);
    // do error
}
```
Y
youliang_1314 已提交
748

L
liuziwei 已提交
749
## AuthInstance<sup>(deprecated)</sup>
Y
youliang_1314 已提交
750 751 752

执行用户认证的对象。

L
liuziwei 已提交
753 754 755 756
> **说明:**
> 从 API version 9 开始支持,从 API version 10 开始废弃,请使用[UserAuthInstance](#userauthinstance10)替代。

### on<sup>(deprecated)</sup>
Y
youliang_1314 已提交
757

Y
youliang_1314 已提交
758
on : (name : AuthEventKey, callback : AuthEvent) => void
Y
youliang_1314 已提交
759

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

762
> **说明:**
L
liuziwei 已提交
763 764 765 766
> 从 API version 9 开始支持,从 API version 10 开始废弃。

> **说明:**
> 使用获取到的[AuthInstance](#authinstancedeprecated)对象调用该接口进行订阅。
Y
youliang_1314 已提交
767 768 769 770 771

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

**参数:**

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

**错误码:**

779 780
以下错误码的详细介绍请参见[用户认证错误码](../errorcodes/errorcode-useriam.md)

Y
youliang_1314 已提交
781 782 783 784
| 错误码ID | 错误信息 |
| -------- | ------- |
| 401 | Incorrect parameters. |
| 12500002 | General operation error. |
Y
youliang_1314 已提交
785 786 787

**示例:**

Y
youliang_1314 已提交
788 789 790 791 792 793 794 795 796 797
```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 已提交
798 799 800 801 802 803
        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 已提交
804 805 806
    });
    // 订阅认证过程中的提示信息
    auth.on("tip", {
Y
youliang_1314 已提交
807 808 809 810 811 812 813 814 815 816
        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 已提交
817 818 819 820 821 822 823 824
    });
    auth.start();
    console.log("authV9 start success");
} catch (error) {
    console.log("authV9 error = " + error);
    // do error
}
```
Y
youliang_1314 已提交
825

L
liuziwei 已提交
826
### off<sup>(deprecated)</sup>
Y
youliang_1314 已提交
827

Y
youliang_1314 已提交
828
off : (name : AuthEventKey) => void
Y
youliang_1314 已提交
829

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

L
liuziwei 已提交
832 833 834
>**说明:**
>从 API version 9 开始支持,从 API version 10 开始废弃。

835
> **说明:**
L
liuziwei 已提交
836
> 需要使用已经成功订阅事件的[AuthInstance](#authinstancedeprecated)对象调用该接口进行取消订阅。
Y
youliang_1314 已提交
837 838 839

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

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

**错误码:**

846 847
以下错误码的详细介绍请参见[用户认证错误码](../errorcodes/errorcode-useriam.md)

Y
youliang_1314 已提交
848 849 850 851
| 错误码ID | 错误信息 |
| -------- | ------- |
| 401 | Incorrect parameters. |
| 12500002 | General operation error. |
Y
youliang_1314 已提交
852 853 854

**示例:**

Y
youliang_1314 已提交
855 856
```js
import userIAM_userAuth from '@ohos.userIAM.userAuth';
Y
youliang_1314 已提交
857

Y
youliang_1314 已提交
858 859 860 861 862 863 864 865 866 867 868 869 870 871
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 已提交
872 873 874 875 876 877
        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 已提交
878 879 880 881 882 883 884 885 886 887 888 889 890
    });
    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 已提交
891

L
liuziwei 已提交
892
### start<sup>(deprecated)</sup>
Y
youliang_1314 已提交
893

Y
youliang_1314 已提交
894
start : () => void
Y
youliang_1314 已提交
895

Y
youliang_1314 已提交
896 897 898
开始认证。

> **说明:**
L
liuziwei 已提交
899 900 901 902
> 从 API version 9 开始支持,从 API version 10 开始废弃。

> **说明:**
> 使用获取到的[AuthInstance](#authinstancedeprecated)对象调用该接口进行认证。
Y
youliang_1314 已提交
903 904 905 906 907

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

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

Y
youliang_1314 已提交
908 909
**错误码:**

910 911
以下错误码的详细介绍请参见[用户认证错误码](../errorcodes/errorcode-useriam.md)

Y
youliang_1314 已提交
912 913 914 915
| 错误码ID | 错误信息 |
| -------- | ------- |
| 201 | Permission verification failed. |
| 401 | Incorrect parameters. |
Y
youliang_1314 已提交
916
| 12500001 | Authentication failed. |
Y
youliang_1314 已提交
917
| 12500002 | General operation error. |
Y
youliang_1314 已提交
918 919
| 12500003 | The operation is canceled. |
| 12500004 | The operation is time-out. |
Y
youliang_1314 已提交
920 921
| 12500005 | The authentication type is not supported. |
| 12500006 | The authentication trust level is not supported. |
Y
youliang_1314 已提交
922 923
| 12500007 | The authentication task is busy. |
| 12500009 | The authenticator is locked. |
Y
youliang_1314 已提交
924 925
| 12500010 | The type of credential has not been enrolled. |

Y
youliang_1314 已提交
926 927
**示例:**

Y
youliang_1314 已提交
928 929 930 931 932 933 934 935 936 937 938 939 940 941 942
```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 已提交
943

L
liuziwei 已提交
944
### cancel<sup>(deprecated)</sup>
Y
youliang_1314 已提交
945

Y
youliang_1314 已提交
946
cancel : () => void
Y
youliang_1314 已提交
947

Y
youliang_1314 已提交
948 949 950
取消认证。

> **说明:**
L
liuziwei 已提交
951 952 953 954
> 从 API version 9 开始支持,从 API version 10 开始废弃。

> **说明:**
> 使用获取到的[AuthInstance](#authinstancedeprecated)对象调用该接口进行取消认证,此[AuthInstance](#authinstancedeprecated)需要是正在进行认证的对象。
Y
youliang_1314 已提交
955 956 957 958 959

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

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

Y
youliang_1314 已提交
960 961
**错误码:**

962 963
以下错误码的详细介绍请参见[用户认证错误码](../errorcodes/errorcode-useriam.md)

Y
youliang_1314 已提交
964 965 966 967 968 969
| 错误码ID | 错误信息 |
| -------- | ------- |
| 201 | Permission verification failed. |
| 401 | Incorrect parameters. |
| 12500002 | General operation error. |

Y
youliang_1314 已提交
970 971
**示例:**

Y
youliang_1314 已提交
972 973 974 975 976 977 978 979 980 981 982 983 984 985 986
```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 已提交
987

L
liuziwei 已提交
988
## userIAM_userAuth.getAuthInstance<sup>(deprecated)</sup>
Y
youliang_1314 已提交
989 990 991 992 993

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

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

L
liuziwei 已提交
994
> **说明:**
L
fix  
liuziweicom 已提交
995
> 从 API version 9 开始支持,从 API version 10 开始废弃,请使用[getUserAuthInstance](#getuserauthinstance10)替代。
L
liuziwei 已提交
996

Y
youliang_1314 已提交
997
> **说明:**
Y
youliang_1314 已提交
998
> 每个AuthInstance只能进行一次认证,若需要再次进行认证则需重新获取AuthInstance。
Y
youliang_1314 已提交
999 1000 1001 1002 1003

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

**参数:**

Y
youliang_1314 已提交
1004
| 参数名         | 类型                                     | 必填 | 说明                     |
Y
youliang_1314 已提交
1005 1006 1007 1008 1009 1010 1011
| -------------- | ---------------------------------------- | ---- | ------------------------ |
| challenge      | Uint8Array                               | 是   | 挑战值,最大长度为32字节,可以填null。     |
| authType       | [UserAuthType](#userauthtype8)           | 是   | 认证类型,当前支持FACE。 |
| authTrustLevel | [AuthTrustLevel](#authtrustlevel8)       | 是   | 认证信任等级。               |

**返回值:**

L
liuziwei 已提交
1012 1013 1014
| 类型                                    | 说明         |
| --------------------------------------- | ------------ |
| [AuthInstance](#authinstancedeprecated) | 认证器对象。 |
Y
youliang_1314 已提交
1015

Y
youliang_1314 已提交
1016 1017
**错误码:**

1018 1019
以下错误码的详细介绍请参见[用户认证错误码](../errorcodes/errorcode-useriam.md)

Y
youliang_1314 已提交
1020 1021 1022 1023 1024 1025 1026
| 错误码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 已提交
1027 1028
**示例:**

Y
youliang_1314 已提交
1029 1030
```js
import userIAM_userAuth from '@ohos.userIAM.userAuth';
Y
youliang_1314 已提交
1031

Y
youliang_1314 已提交
1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042
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 已提交
1043 1044 1045 1046 1047

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

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

Y
youliang_1314 已提交
1048
查询指定类型和等级的认证能力是否支持。
Y
youliang_1314 已提交
1049 1050 1051 1052 1053 1054 1055

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

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

**参数:**

Y
youliang_1314 已提交
1056
| 参数名         | 类型                               | 必填 | 说明                       |
Y
youliang_1314 已提交
1057 1058
| -------------- | ---------------------------------- | ---- | -------------------------- |
| authType       | [UserAuthType](#userauthtype8)     | 是   | 认证类型,当前只支持FACE。 |
Y
youliang_1314 已提交
1059 1060 1061 1062
| authTrustLevel | [AuthTrustLevel](#authtrustlevel8) | 是   | 认证信任等级。       |

**错误码:**

1063 1064
以下错误码的详细介绍请参见[用户认证错误码](../errorcodes/errorcode-useriam.md)

Y
youliang_1314 已提交
1065 1066 1067 1068 1069 1070 1071 1072
| 错误码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 已提交
1073 1074 1075

**示例:**

Y
youliang_1314 已提交
1076 1077
```js
import userIAM_userAuth from '@ohos.userIAM.userAuth';
Y
youliang_1314 已提交
1078

Y
youliang_1314 已提交
1079 1080 1081 1082 1083 1084 1085
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 已提交
1086

1087
## UserAuthResultCode<sup>9+</sup>
Y
youliang_1314 已提交
1088

Y
youliang_1314 已提交
1089
表示返回码的枚举。
Y
youliang_1314 已提交
1090 1091 1092

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

Y
youliang_1314 已提交
1093
| 名称                    |   值   | 说明                 |
Y
youliang_1314 已提交
1094 1095
| ----------------------- | ------ | -------------------- |
| SUCCESS                 | 12500000      | 执行成功。           |
Y
youliang_1314 已提交
1096
| FAIL                    | 12500001      | 认证失败。           |
Y
youliang_1314 已提交
1097 1098 1099 1100 1101 1102 1103 1104
| GENERAL_ERROR           | 12500002      | 操作通用错误。       |
| CANCELED                | 12500003      | 操作取消。           |
| TIMEOUT                 | 12500004      | 操作超时。           |
| TYPE_NOT_SUPPORT        | 12500005      | 不支持的认证类型。   |
| TRUST_LEVEL_NOT_SUPPORT | 12500006      | 不支持的认证等级。   |
| BUSY                    | 12500007      | 忙碌状态。           |
| LOCKED                  | 12500009      | 认证器已锁定。       |
| NOT_ENROLLED            | 12500010      | 用户未录入认证信息。 |
L
fix  
liuziweicom 已提交
1105
| CANCELED_FROM_WIDGET<sup>10+</sup> | 12500011 | 当前的认证操作被用户从组件取消。返回这个错误码,表示使用应用自定义认证。 |
1106

L
liuziwei 已提交
1107
## UserAuth<sup>(deprecated)</sup>
Z
zengyawen 已提交
1108

Y
youliang_1314 已提交
1109
认证器对象。
Z
zengyawen 已提交
1110

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

1113
constructor()
1114

Y
youliang_1314 已提交
1115 1116
创建认证器对象。

Y
youliang_1314 已提交
1117
> **说明:**
L
liuziwei 已提交
1118
> 从 API version 8 开始支持,从 API version 9 开始废弃,请使用[getAuthInstance](#useriam_userauthgetauthinstancedeprecated)替代。
Y
youliang_1314 已提交
1119

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

1122
**返回值:**
1123

1124 1125
| 类型                   | 说明                 |
| ---------------------- | -------------------- |
L
liuziwei 已提交
1126
| [UserAuth](#userauthdeprecated) | 认证器对象。 |
Z
zengyawen 已提交
1127

1128
**示例:**
1129

Y
youliang_1314 已提交
1130 1131
```js
import userIAM_userAuth from '@ohos.userIAM.userAuth';
1132

Y
youliang_1314 已提交
1133 1134
let auth = new userIAM_userAuth.UserAuth();
```
Z
zengyawen 已提交
1135

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

1138
getVersion() : number
Z
zengyawen 已提交
1139

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

Y
youliang_1314 已提交
1142
> **说明:**
1143
> 从 API version 8 开始支持,从 API version 9 开始废弃。
Y
youliang_1314 已提交
1144

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

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

1149
**返回值:**
1150

1151 1152
| 类型   | 说明                   |
| ------ | ---------------------- |
Y
youliang_1314 已提交
1153
| number | 认证器版本信息。 |
1154

1155
**示例:**
Z
zengyawen 已提交
1156

Y
youliang_1314 已提交
1157 1158
```js
import userIAM_userAuth from '@ohos.userIAM.userAuth';
1159

Y
youliang_1314 已提交
1160 1161 1162 1163
let auth = new userIAM_userAuth.UserAuth();
let version = auth.getVersion();
console.info("auth version = " + version);
```
1164

Y
youliang_1314 已提交
1165
### getAvailableStatus<sup>(deprecated)</sup>
1166

1167
getAvailableStatus(authType : UserAuthType, authTrustLevel : AuthTrustLevel) : number
1168

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

Y
youliang_1314 已提交
1171
> **说明:**
Z
zengyawen 已提交
1172
> 从 API version 8 开始支持,从 API version 9 开始废弃,请使用[getAvailableStatus](#useriam_userauthgetavailablestatus9)替代。
Y
youliang_1314 已提交
1173

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

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

1178
**参数:**
1179

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

1185
**返回值:**
1186

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

1191
**示例:**
1192

Y
youliang_1314 已提交
1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203
```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 已提交
1204

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

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

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

Y
youliang_1314 已提交
1211
> **说明:**
1212
> 从 API version 8 开始支持,从 API version 9 开始废弃,建议使用[start](#startdeprecated)代替。
Y
youliang_1314 已提交
1213

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

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

1218
**参数:**
1219

Y
youliang_1314 已提交
1220
| 参数名         | 类型                                     | 必填 | 说明                     |
1221 1222 1223
| -------------- | ---------------------------------------- | ---- | ------------------------ |
| challenge      | Uint8Array                               | 是   | 挑战值,可以填null。     |
| authType       | [UserAuthType](#userauthtype8)           | 是   | 认证类型,当前支持FACE。 |
1224 1225
| authTrustLevel | [AuthTrustLevel](#authtrustlevel8)       | 是   | 认证信任等级。             |
| callback       | [IUserAuthCallback](#iuserauthcallbackdeprecated) | 是   | 回调函数。        |
1226

1227
**返回值:**
1228

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

1233
**示例:**
Z
zengyawen 已提交
1234

Y
youliang_1314 已提交
1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254
```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 已提交
1255

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

1258
cancelAuth(contextID : Uint8Array) : number
Z
zengyawen 已提交
1259

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

Y
youliang_1314 已提交
1262
> **说明:**
1263
> 从 API version 8 开始支持,从 API version 9 开始废弃,建议使用[cancel](#canceldeprecated)代替。
Y
youliang_1314 已提交
1264

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

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

1269
**参数:**
1270

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

1275
**返回值:**
1276

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

1281
**示例:**
1282

Y
youliang_1314 已提交
1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295
```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");
}
```
1296

Y
youliang_1314 已提交
1297 1298
## IUserAuthCallback<sup>(deprecated)</sup>

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

Y
youliang_1314 已提交
1301
> **说明:**
Z
zengyawen 已提交
1302
> 从 API version 8 开始支持,从 API version 9 开始废弃,建议使用[AuthEvent](#authevent9)代替。
1303

Y
youliang_1314 已提交
1304
### onResult<sup>(deprecated)</sup>
1305

1306
onResult: (result : number, extraInfo : AuthResult) => void
1307

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

Y
youliang_1314 已提交
1310
> **说明:**
Z
zengyawen 已提交
1311
> 从 API version 8 开始支持,从 API version 9 开始废弃,建议使用[callback](#callback9)代替。
Y
youliang_1314 已提交
1312

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

1315
**参数:**
1316

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

1322
**示例:**
1323

Y
youliang_1314 已提交
1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343
```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 已提交
1344

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

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

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

Y
youliang_1314 已提交
1351
> **说明:**
Z
zengyawen 已提交
1352
> 从 API version 8 开始支持,从 API version 9 开始废弃,建议使用[callback](#callback9)代替。
Y
youliang_1314 已提交
1353

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

1356
**参数:**
Z
zengyawen 已提交
1357

Y
youliang_1314 已提交
1358
| 参数名    | 类型   | 必填 | 说明                           |
1359
| --------- | ------ | ---- | ------------------------------ |
Y
youliang_1314 已提交
1360 1361
| module    | number | 是   | 发送提示信息的模块标识。             |
| acquire   | number | 是   | 认证执过程中的提示信息。 |
1362
| extraInfo | any    | 是   | 预留字段。                     |
Z
zengyawen 已提交
1363

1364
**示例:**
Z
zengyawen 已提交
1365

Y
youliang_1314 已提交
1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381
```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);
        }
    }
});
```
1382

Y
youliang_1314 已提交
1383 1384
## AuthResult<sup>(deprecated)</sup>

Y
youliang_1314 已提交
1385 1386
表示认证结果的对象。

Y
youliang_1314 已提交
1387
> **说明:**
Z
zengyawen 已提交
1388
> 从 API version 8 开始支持,从 API version 9 开始废弃,建议使用[AuthResultInfo](#authresultinfo9)代替。
Z
zengyawen 已提交
1389

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

Y
youliang_1314 已提交
1392 1393 1394
| 名称         | 类型   | 必填 | 说明                 |
| ------------ | ---------- | ---- | -------------------|
| token        | Uint8Array | 否   | 认证通过的令牌信息。 |
1395 1396 1397
| remainTimes  | number     | 否   | 剩余的认证操作次数。 |
| freezingTime | number     | 否   | 认证操作的冻结时间。 |

Y
youliang_1314 已提交
1398 1399
## ResultCode<sup>(deprecated)</sup>

Y
youliang_1314 已提交
1400 1401
表示返回码的枚举。

Y
youliang_1314 已提交
1402
> **说明:**
1403
> 从 API version 9 开始废弃,建议使用[UserAuthResultCode](#userauthresultcode9)代替。
Z
zengyawen 已提交
1404

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

Y
youliang_1314 已提交
1407
| 名称                    | 值 | 说明                 |
1408 1409
| ----------------------- | ------ | -------------------- |
| SUCCESS                 | 0      | 执行成功。           |
Y
youliang_1314 已提交
1410
| FAIL                    | 1      | 认证失败。           |
1411 1412 1413 1414 1415 1416
| GENERAL_ERROR           | 2      | 操作通用错误。       |
| CANCELED                | 3      | 操作取消。           |
| TIMEOUT                 | 4      | 操作超时。           |
| TYPE_NOT_SUPPORT        | 5      | 不支持的认证类型。   |
| TRUST_LEVEL_NOT_SUPPORT | 6      | 不支持的认证等级。   |
| BUSY                    | 7      | 忙碌状态。           |
Y
youliang_1314 已提交
1417
| INVALID_PARAMETERS      | 8      | 无效参数。           |
1418 1419
| LOCKED                  | 9      | 认证器已锁定。       |
| NOT_ENROLLED            | 10     | 用户未录入认证信息。 |
Z
zengyawen 已提交
1420

1421
## FaceTips<sup>8+</sup>
Z
zengyawen 已提交
1422

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

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

Y
youliang_1314 已提交
1427
| 名称                          |   值   |    说明                             |
1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439
| ----------------------------- | ------ | ------------------------------------ |
| 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 已提交
1440 1441


1442
## FingerprintTips<sup>8+</sup>
Z
zengyawen 已提交
1443

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

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

Y
youliang_1314 已提交
1448
| 名称                              |   值   | 说明                                               |
1449 1450 1451 1452 1453 1454 1455
| --------------------------------- | ------ | -------------------------------------------------- |
| 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 已提交
1456 1457


1458
## UserAuthType<sup>8+</sup>
Z
zengyawen 已提交
1459

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

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

L
liuziwei 已提交
1464 1465
| 名称        | 值   | 说明       |
| ----------- | ---- | ---------- |
L
add  
liuziwei 已提交
1466
| PIN<sup>10+</sup>         | 1    | 口令认证。 |
L
liuziwei 已提交
1467 1468
| FACE        | 2    | 人脸认证。 |
| FINGERPRINT | 4    | 指纹认证。 |
1469

1470
## AuthTrustLevel<sup>8+</sup>
1471 1472 1473

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

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

Y
youliang_1314 已提交
1476
| 名称 |   值   | 说明                      |
1477 1478 1479 1480
| ---- | ------ | ------------------------- |
| ATL1 | 10000  | 认证结果的信任等级级别1。 |
| ATL2 | 20000  | 认证结果的信任等级级别2。 |
| ATL3 | 30000  | 认证结果的信任等级级别3。 |
1481 1482 1483 1484 1485 1486
| ATL4 | 40000  | 认证结果的信任等级级别4。 |

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

getAuthenticator(): Authenticator

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

1489
> **说明:**
Y
youliang_1314 已提交
1490
> 从 API version 8 开始废弃,建议使用[constructor](#constructordeprecated)替代。
1491 1492 1493 1494

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

**返回值:**
1495

1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508
| 类型                                      | 说明         |
| ----------------------------------------- | ------------ |
| [Authenticator](#authenticatordeprecated) | 认证器对象。 |

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

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

认证器对象。

Y
youliang_1314 已提交
1509
> **说明:**
L
liuziwei 已提交
1510
> 从 API version 8 开始废弃,建议使用[UserAuth](#userauthdeprecated)替代。
1511 1512 1513

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

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

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

1518
> **说明:**
Y
youliang_1314 已提交
1519
> 从 API version 8 开始废弃,建议使用[auth](#authdeprecated)替代。
1520 1521 1522 1523 1524 1525 1526

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

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

**参数:**

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

1533
callback返回值:
1534 1535 1536 1537 1538 1539

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

**示例:**
Y
youliang_1314 已提交
1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550

```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);
});
```
1551 1552 1553 1554


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

Y
youliang_1314 已提交
1555 1556 1557
execute(type : AuthType, level : SecureLevel): Promise&lt;number&gt;

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

> **说明:**
Y
youliang_1314 已提交
1560
> 从 API version 8 开始废弃,建议使用[auth](#authdeprecated)替代。
1561 1562 1563 1564 1565 1566

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

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

**参数:**
1567

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

**返回值:**
1574

1575 1576 1577 1578 1579 1580
| 类型                  | 说明                                                         |
| --------------------- | ------------------------------------------------------------ |
| Promise&lt;number&gt; | 返回携带一个number的Promise。number&nbsp;为认证结果,参见[AuthenticationResult](#authenticationresultdeprecated)。 |

**示例:**

Y
youliang_1314 已提交
1581 1582 1583 1584 1585 1586 1587 1588
```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);
});
```
1589 1590 1591

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

Y
youliang_1314 已提交
1592 1593
表示认证结果的枚举。

1594
> **说明:**
Y
youliang_1314 已提交
1595
> 从 API version 8 开始废弃,建议使用[ResultCode](#resultcodedeprecated)替代。
1596 1597 1598

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

Y
youliang_1314 已提交
1599
| 名称               |   值   | 说明                       |
1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610
| ------------------ | ------ | -------------------------- |
| 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 已提交
1611
| GENERAL_ERROR      | 100    | 其他错误。                 |