1# @ohos.userIAM.userAuth (用户认证)
2
3提供用户认证能力,可应用于设备解锁、支付、应用登录等身份认证场景。
4
5> **说明:**
6> 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
7
8
9## 导入模块
10
11```ts
12import { userAuth } from '@kit.UserAuthenticationKit';
13```
14
15## 常量
16
17表示复用设备解锁结果最大有效时长。
18
19**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
20
21**系统能力**:SystemCapability.UserIAM.UserAuth.Core
22
23| 名称        | 值   | 说明       |
24| ----------- | ---- | ---------- |
25| MAX_ALLOWABLE_REUSE_DURATION<sup>12+</sup>    | 300000   | 复用设备解锁结果最大有效时长,值为300000毫秒。 |
26
27## EnrolledState<sup>12+</sup>
28
29表示用户注册凭据的状态。
30
31**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
32
33**系统能力**:SystemCapability.UserIAM.UserAuth.Core
34
35| 名称         | 类型    | 可读 | 可写 | 说明                 |
36| ------------ | ---------- | ---- | ---- | -------------------- |
37| credentialDigest       | number | 是   |  否 | 注册的凭据摘要,在凭据增加时随机生成。|
38| credentialCount        | number | 是   |  否 | 注册的凭据数量。       |
39
40## ReuseMode<sup>12+</sup>
41
42表示复用设备解锁结果的模式。
43
44**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
45
46**系统能力**:SystemCapability.UserIAM.UserAuth.Core
47
48| 名称        | 值   | 说明       |
49| ----------- | ---- | ---------- |
50| AUTH_TYPE_RELEVANT    | 1   | 与认证类型相关,只有当设备解锁结果在有效时间内,并且设备解锁的认证类型匹配上本次认证指定认证类型之一时,可以复用该结果。 |
51| AUTH_TYPE_IRRELEVANT  | 2   | 与认证类型无关,只要解锁认证结果在有效时间内,就可以重复使用。 |
52
53## ReuseUnlockResult<sup>12+</sup>
54
55表示复用设备解锁结果。
56> **说明**:
57>
58> 如果锁屏解锁后,在有效时间内凭据发生了变化,锁屏认证结果依然可以复用,认证结果中返回当前实际的EnrolledState。若复用锁屏认证结果
59> 时,凭据已经被完全删除,则返回的EnrolledState中credentialCount和credentialDigest均为0。
60
61**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
62
63**系统能力**:SystemCapability.UserIAM.UserAuth.Core
64
65| 名称         | 类型   | 必填 | 说明                 |
66| ------------ | ---------- | ---- | -------------------- |
67| reuseMode        | [ReuseMode](#reusemode12) | 是   | 复用设备解锁结果的模式。       |
68| reuseDuration    | number | 是   | 允许复用设备解锁结果的有效时长,有效时长的值应大于0,最大值为[MAX_ALLOWABLE_REUSE_DURATION](#常量)。 |
69
70## userAuth.getEnrolledState<sup>12+</sup>
71
72getEnrolledState(authType : UserAuthType): EnrolledState
73
74查询凭据注册的状态,用于感知用户注册凭据变化。
75
76**需要权限**:ohos.permission.ACCESS_BIOMETRIC
77
78**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
79
80**系统能力**:SystemCapability.UserIAM.UserAuth.Core
81
82**参数:**
83
84| 参数名         | 类型                               | 必填 | 说明                       |
85| -------------- | ---------------------------------- | ---- | -------------------------- |
86| authType       | [UserAuthType](#userauthtype8)     | 是   | 认证类型。|
87
88**返回值:**
89
90| 类型                  | 说明                                                         |
91| --------------------- | ------------------------------------------------------------ |
92| [EnrolledState](#enrolledstate12) | 当查询成功时,返回用户注册凭据的状态。 |
93
94**错误码:**
95
96以下错误码的详细介绍请参见[用户认证错误码](errorcode-useriam.md)。
97
98| 错误码ID | 错误信息 |
99| -------- | ------- |
100| 201 | Permission verification failed. |
101| 401 | Incorrect parameters. Possible causes: 1.Mandatory parameters are left unspecified. |
102| 12500002 | General operation error. |
103| 12500005 | The authentication type is not supported. |
104| 12500010 | The type of credential has not been enrolled. |
105
106**示例:**
107
108```ts
109import { userAuth } from '@kit.UserAuthenticationKit';
110
111try {
112  let enrolledState = userAuth.getEnrolledState(userAuth.UserAuthType.FACE);
113  console.info('get current enrolled state success, enrolledState = ' + JSON.stringify(enrolledState));
114} catch (error) {
115  console.error('get current enrolled state failed, error = ' + JSON.stringify(error));
116}
117```
118
119## AuthParam<sup>10+</sup>
120
121用户认证相关参数。
122
123**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
124
125**系统能力**:SystemCapability.UserIAM.UserAuth.Core
126
127| 名称           | 类型                               | 必填 | 说明                                                         |
128| -------------- | ---------------------------------- | ---- | ------------------------------------------------------------ |
129| challenge      | Uint8Array                         | 是   | 随机挑战值,用来防重放攻击。最大长度为32字节,可传Uint8Array([])。 |
130| authType       | [UserAuthType](#userauthtype8)[]   | 是   | 认证类型列表,用来指定用户认证界面提供的认证方法。           |
131| authTrustLevel | [AuthTrustLevel](#authtrustlevel8) | 是   | 认证信任等级。                                               |
132| reuseUnlockResult<sup>12+</sup> | [ReuseUnlockResult](#reuseunlockresult12) | 否   |表示可以复用设备解锁结果。|
133
134## WidgetParam<sup>10+</sup>
135
136用户认证界面配置相关参数。
137
138**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
139
140**系统能力**:SystemCapability.UserIAM.UserAuth.Core
141
142| 名称                 | 类型                                | 必填 | 说明                                                         |
143| -------------------- | ----------------------------------- | ---- | ------------------------------------------------------------ |
144| title                | string                              | 是   | 用户认证界面的标题,最大长度为500字符。                      |
145| navigationButtonText | string                              | 否   | 导航按键的说明文本,最大长度为60字符。仅在单指纹、单人脸场景下支持。 |
146
147## UserAuthResult<sup>10+</sup>
148
149用户认证结果。当认证结果为成功时,返回认证类型和认证通过的令牌信息。
150
151**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
152
153**系统能力**:SystemCapability.UserIAM.UserAuth.Core
154
155| 名称     | 类型                           | 必填 | 说明                                                         |
156| -------- | ------------------------------ | ---- | ------------------------------------------------------------ |
157| result   | number                         | 是   | 用户认证结果。若成功返回SUCCESS,若失败返回相应错误码,参见[UserAuthResultCode](#userauthresultcode9)。 |
158| token    | Uint8Array                     | 否   | 当认证结果为成功时,返回认证通过的令牌信息。                 |
159| authType | [UserAuthType](#userauthtype8) | 否   | 当认证结果为成功时,返回认证类型。                           |
160| enrolledState<sup>12+</sup> | [EnrolledState](#enrolledstate12) | 否   |  当认证结果为成功时,返回注册凭据的状态。         |
161
162## IAuthCallback<sup>10+</sup>
163
164返回认证结果的回调对象。
165
166### onResult<sup>10+</sup>
167
168onResult(result: UserAuthResult): void
169
170回调函数,返回认证结果。如果认证成功,可以通过UserAuthResult获取到认证通过的令牌信息。
171
172**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
173
174**系统能力**:SystemCapability.UserIAM.UserAuth.Core
175
176**参数:**
177
178| 参数名 | 类型                                | 必填 | 说明       |
179| ------ | ----------------------------------- | ---- | ---------- |
180| result | [UserAuthResult](#userauthresult10) | 是   | 认证结果。 |
181
182**示例1:**
183
184```ts
185import { BusinessError } from '@kit.BasicServicesKit';
186import { cryptoFramework } from '@kit.CryptoArchitectureKit';
187import { userAuth } from '@kit.UserAuthenticationKit';
188
189try {
190  const rand = cryptoFramework.createRandom();
191  const len: number = 16;
192  const randData: Uint8Array = rand?.generateRandomSync(len)?.data;
193  const authParam: userAuth.AuthParam = {
194    challenge: randData,
195    authType: [userAuth.UserAuthType.PIN],
196    authTrustLevel: userAuth.AuthTrustLevel.ATL3,
197  };
198  const widgetParam: userAuth.WidgetParam = {
199    title: '请输入密码',
200  };
201
202  const userAuthInstance = userAuth.getUserAuthInstance(authParam, widgetParam);
203  console.log('get userAuth instance success');
204  // 需要调用UserAuthInstance的start()接口,启动认证后,才能通过onResult获取到认证结果。
205  userAuthInstance.on('result', {
206    onResult (result) {
207      console.log(`userAuthInstance callback result = ${JSON.stringify(result)}`);
208    }
209  });
210  console.log('auth on success');
211} catch (error) {
212  const err: BusinessError = error as BusinessError;
213  console.error(`auth catch error. Code is ${err?.code}, message is ${err?.message}`);
214}
215```
216
217**示例2:**
218
219```ts
220import { BusinessError } from '@kit.BasicServicesKit';
221import { cryptoFramework } from '@kit.CryptoArchitectureKit';
222import { userAuth } from '@kit.UserAuthenticationKit';
223
224let reuseUnlockResult: userAuth.ReuseUnlockResult = {
225  reuseMode: userAuth.ReuseMode.AUTH_TYPE_RELEVANT,
226  reuseDuration: userAuth.MAX_ALLOWABLE_REUSE_DURATION,
227}
228try {
229  const rand = cryptoFramework.createRandom();
230  const len: number = 16;
231  const randData: Uint8Array = rand?.generateRandomSync(len)?.data;
232  const authParam: userAuth.AuthParam = {
233    challenge: randData,
234    authType: [userAuth.UserAuthType.PIN],
235    authTrustLevel: userAuth.AuthTrustLevel.ATL3,
236    reuseUnlockResult: reuseUnlockResult,
237  };
238  const widgetParam: userAuth.WidgetParam = {
239    title: '请输入密码',
240  };
241  const userAuthInstance = userAuth.getUserAuthInstance(authParam, widgetParam);
242  console.log('get userAuth instance success');
243  // 需要调用UserAuthInstance的start()接口,启动认证后,才能通过onResult获取到认证结果。
244  userAuthInstance.on('result', {
245    onResult (result) {
246      console.log(`userAuthInstance callback result = ${JSON.stringify(result)}`);
247    }
248  });
249  console.log('auth on success');
250} catch (error) {
251  const err: BusinessError = error as BusinessError;
252  console.error(`auth catch error. Code is ${err?.code}, message is ${err?.message}`);
253}
254```
255
256## UserAuthInstance<sup>10+</sup>
257
258用于执行用户身份认证,并支持使用统一用户身份认证控件。
259使用以下接口前,都需要先通过[getUserAuthInstance](#userauthgetuserauthinstance10)方法获取UserAuthInstance对象。
260
261### on<sup>10+</sup>
262
263on(type: 'result', callback: IAuthCallback): void
264
265订阅用户身份认证结果。
266
267**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
268
269**系统能力**:SystemCapability.UserIAM.UserAuth.Core
270
271**参数:**
272
273| 参数名   | 类型                              | 必填 | 说明                                       |
274| -------- | --------------------------------- | ---- | ------------------------------------------ |
275| type     | 'result'                          | 是   | 订阅事件类型,表明该事件用来返回认证结果。 |
276| callback | [IAuthCallback](#iauthcallback10) | 是   | 认证接口的回调函数,用于返回认证结果。     |
277
278**错误码:**
279
280以下错误码的详细介绍请参见[用户认证错误码](errorcode-useriam.md)。
281
282| 错误码ID | 错误信息                 |
283| -------- | ------------------------ |
284| 401      | Incorrect parameters. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed. |
285| 12500002 | General operation error. |
286
287**示例:**
288
289```ts
290import { BusinessError } from '@kit.BasicServicesKit';
291import { cryptoFramework } from '@kit.CryptoArchitectureKit';
292import { userAuth } from '@kit.UserAuthenticationKit';
293
294try {
295  const rand = cryptoFramework.createRandom();
296  const len: number = 16;
297  const randData: Uint8Array = rand?.generateRandomSync(len)?.data;
298  const authParam: userAuth.AuthParam = {
299    challenge: randData,
300    authType: [userAuth.UserAuthType.PIN],
301    authTrustLevel: userAuth.AuthTrustLevel.ATL3,
302  };
303  const widgetParam: userAuth.WidgetParam = {
304    title: '请输入密码',
305  };
306  const userAuthInstance = userAuth.getUserAuthInstance(authParam, widgetParam);
307  console.log('get userAuth instance success');
308  // 需要调用UserAuthInstance的start()接口,启动认证后,才能通过onResult获取到认证结果。
309  userAuthInstance.on('result', {
310    onResult (result) {
311      console.log(`userAuthInstance callback result = ${JSON.stringify(result)}`);
312    }
313  });
314  console.log('auth on success');
315} catch (error) {
316  const err: BusinessError = error as BusinessError;
317  console.error(`auth catch error. Code is ${err?.code}, message is ${err?.message}`);
318}
319```
320
321### off<sup>10+</sup>
322
323off(type: 'result', callback?: IAuthCallback): void
324
325取消订阅用户身份认证结果。
326
327> **说明**:
328> 
329> 需要使用已经成功订阅事件的[UserAuthInstance](#userauthinstance10)对象调用该接口进行取消订阅。
330
331**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
332
333**系统能力**:SystemCapability.UserIAM.UserAuth.Core
334
335**参数:**
336
337| 参数名   | 类型                              | 必填 | 说明                                       |
338| -------- | --------------------------------- | ---- | ------------------------------------------ |
339| type     | 'result'                          | 是   | 订阅事件类型,表明该事件用来返回认证结果。 |
340| callback | [IAuthCallback](#iauthcallback10) | 否   | 认证接口的回调函数,用于返回认证结果。     |
341
342**错误码:**
343
344以下错误码的详细介绍请参见[用户认证错误码](errorcode-useriam.md)。
345
346| 错误码ID | 错误信息                 |
347| -------- | ------------------------ |
348| 401      | Incorrect parameters. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed. |
349| 12500002 | General operation error. |
350
351**示例:**
352
353```ts
354import { BusinessError } from '@kit.BasicServicesKit';
355import { cryptoFramework } from '@kit.CryptoArchitectureKit';
356import { userAuth } from '@kit.UserAuthenticationKit';
357
358try {
359  const rand = cryptoFramework.createRandom();
360  const len: number = 16;
361  const randData: Uint8Array = rand?.generateRandomSync(len)?.data;
362  const authParam: userAuth.AuthParam = {
363    challenge: randData,
364    authType: [userAuth.UserAuthType.PIN],
365    authTrustLevel: userAuth.AuthTrustLevel.ATL3,
366  };
367  const widgetParam: userAuth.WidgetParam = {
368    title: '请输入密码',
369  };
370  const userAuthInstance = userAuth.getUserAuthInstance(authParam, widgetParam);
371  console.log('get userAuth instance success');
372  userAuthInstance.off('result', {
373    onResult (result) {
374      console.log(`auth off result = ${JSON.stringify(result)}`);
375    }
376  });
377  console.log('auth off success');
378} catch (error) {
379  const err: BusinessError = error as BusinessError;
380  console.error(`auth catch error. Code is ${err?.code}, message is ${err?.message}`);
381}
382```
383
384### start<sup>10+</sup>
385
386start(): void
387
388开始认证。
389
390> **说明:**
391> 每个UserAuthInstance只能进行一次认证,若需要再次进行认证则需重新获取UserAuthInstance。
392
393**需要权限**:ohos.permission.ACCESS_BIOMETRIC
394
395**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
396
397**系统能力**:SystemCapability.UserIAM.UserAuth.Core
398
399**错误码:**
400
401以下错误码的详细介绍请参见[用户认证错误码](errorcode-useriam.md)。
402
403| 错误码ID | 错误信息                                         |
404| -------- | ------------------------------------------------ |
405| 201      | Permission verification failed.                  |
406| 401      | Incorrect parameters. Possible causes: 1.Incorrect parameter types. |
407| 12500001 | Authentication failed.                           |
408| 12500002 | General operation error.                         |
409| 12500003 | Authentication canceled.                         |
410| 12500004 | Authentication timeout.                          |
411| 12500005 | The authentication type is not supported.        |
412| 12500006 | The authentication trust level is not supported. |
413| 12500007 | Authentication service is busy.                  |
414| 12500009 | Authentication is locked out.                    |
415| 12500010 | The type of credential has not been enrolled.    |
416| 12500011 | Switched to the custom authentication process.   |
417| 12500013 | Operation failed because of PIN expired. |
418
419**示例:**
420
421```ts
422import { BusinessError } from '@kit.BasicServicesKit';
423import { cryptoFramework } from '@kit.CryptoArchitectureKit';
424import { userAuth } from '@kit.UserAuthenticationKit';
425
426try {
427  const rand = cryptoFramework.createRandom();
428  const len: number = 16;
429  const randData: Uint8Array = rand?.generateRandomSync(len)?.data;
430  const authParam: userAuth.AuthParam = {
431    challenge: randData,
432    authType: [userAuth.UserAuthType.PIN],
433    authTrustLevel: userAuth.AuthTrustLevel.ATL3,
434  };
435  const widgetParam: userAuth.WidgetParam = {
436    title: '请输入密码',
437  };
438  const userAuthInstance = userAuth.getUserAuthInstance(authParam, widgetParam);
439  console.log('get userAuth instance success');
440  userAuthInstance.start();
441  console.log('auth start success');
442} catch (error) {
443  const err: BusinessError = error as BusinessError;
444  console.error(`auth catch error. Code is ${err?.code}, message is ${err?.message}`);
445}
446```
447
448### cancel<sup>10+</sup>
449
450cancel(): void
451
452取消认证。
453
454> **说明**:
455>
456> 此时UserAuthInstance需要是正在进行认证的对象。
457
458**需要权限**:ohos.permission.ACCESS_BIOMETRIC
459
460**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
461
462**系统能力**:SystemCapability.UserIAM.UserAuth.Core
463
464**错误码:**
465
466| 错误码ID | 错误信息                        |
467| -------- | ------------------------------- |
468| 201      | Permission verification failed. |
469| 401      | Incorrect parameters. Possible causes: 1.Incorrect parameter types. |
470| 12500002 | General operation error.        |
471
472**示例:**
473
474```ts
475import { BusinessError } from '@kit.BasicServicesKit';
476import { cryptoFramework } from '@kit.CryptoArchitectureKit';
477import { userAuth } from '@kit.UserAuthenticationKit';
478
479try {
480  const rand = cryptoFramework.createRandom();
481  const len: number = 16;
482  const randData: Uint8Array = rand?.generateRandomSync(len)?.data;
483  const authParam : userAuth.AuthParam = {
484    challenge: randData,
485    authType: [userAuth.UserAuthType.PIN],
486    authTrustLevel: userAuth.AuthTrustLevel.ATL3,
487  };
488  const widgetParam: userAuth.WidgetParam = {
489    title: '请输入密码',
490  };
491  const userAuthInstance = userAuth.getUserAuthInstance(authParam, widgetParam);
492  console.log('get userAuth instance success');
493  // 需要调用UserAuthInstance的start()接口,启动认证后,才能调用cancel()接口。
494  userAuthInstance.cancel();
495  console.log('auth cancel success');
496} catch (error) {
497  const err: BusinessError = error as BusinessError;
498  console.error(`auth catch error. Code is ${err?.code}, message is ${err?.message}`);
499}
500```
501
502## userAuth.getUserAuthInstance<sup>10+</sup>
503
504getUserAuthInstance(authParam: AuthParam, widgetParam: WidgetParam): UserAuthInstance
505
506获取[UserAuthInstance](#userauthinstance10)对象,用于执行用户身份认证,并支持使用统一用户身份认证控件。
507
508> **说明:**
509> 每个UserAuthInstance只能进行一次认证,若需要再次进行认证则需重新获取UserAuthInstance。
510
511**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
512
513**系统能力**:SystemCapability.UserIAM.UserAuth.Core
514
515**参数:**
516
517| 参数名      | 类型                          | 必填 | 说明                       |
518| ----------- | ----------------------------- | ---- | -------------------------- |
519| authParam   | [AuthParam](#authparam10)      | 是   | 用户认证相关参数。         |
520| widgetParam | [WidgetParam](#widgetparam10) | 是   | 用户认证界面配置相关参数。 |
521
522**返回值:**
523
524| 类型                                    | 说明                       |
525| --------------------------------------- | -------------------------- |
526| [UserAuthInstance](#userauthinstance10) | 支持用户界面的认证器对象。 |
527
528**错误码:**
529
530以下错误码的详细介绍请参见[用户认证错误码](errorcode-useriam.md)。
531
532| 错误码ID | 错误信息                                         |
533| -------- | ------------------------------------------------ |
534| 401      | Incorrect parameters. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. 3.Parameter verification failed.   |
535| 12500002 | General operation error.                         |
536| 12500005 | The authentication type is not supported.        |
537| 12500006 | The authentication trust level is not supported. |
538
539**示例:**
540
541```ts
542import { BusinessError } from '@kit.BasicServicesKit';
543import { cryptoFramework } from '@kit.CryptoArchitectureKit';
544import { userAuth } from '@kit.UserAuthenticationKit';
545
546try {
547  const rand = cryptoFramework.createRandom();
548  const len: number = 16;
549  const randData: Uint8Array = rand?.generateRandomSync(len)?.data;
550  const authParam: userAuth.AuthParam = {
551    challenge: randData,
552    authType: [userAuth.UserAuthType.PIN],
553    authTrustLevel: userAuth.AuthTrustLevel.ATL3,
554  };
555  const widgetParam: userAuth.WidgetParam = {
556    title: '请输入密码',
557  };
558  let userAuthInstance = userAuth.getUserAuthInstance(authParam, widgetParam);
559  console.log('get userAuth instance success');
560} catch (error) {
561  const err: BusinessError = error as BusinessError;
562  console.error(`auth catch error. Code is ${err?.code}, message is ${err?.message}`);
563}
564```
565
566## AuthResultInfo<sup>(deprecated)</sup>
567
568表示认证结果信息。
569
570> **说明:**
571> 从 API version 9 开始支持,从 API version 11 开始废弃。
572
573**系统能力**:SystemCapability.UserIAM.UserAuth.Core
574
575| 名称         | 类型   | 必填 | 说明                 |
576| ------------ | ---------- | ---- | -------------------- |
577| result        | number | 是   | 认证结果。       |
578| token        | Uint8Array | 否   | 用户身份认证通过的凭证。 |
579| remainAttempts  | number     | 否   | 剩余的认证尝试次数。 |
580| lockoutDuration | number     | 否   | 认证操作的锁定时长,时间单位为毫秒ms。 |
581
582## TipInfo<sup>(deprecated)</sup>
583
584表示认证过程中的提示信息。
585
586> **说明:**
587> 从 API version 9 开始支持,从 API version 11 开始废弃。
588
589**系统能力**:SystemCapability.UserIAM.UserAuth.Core590
591| 名称         | 类型   | 必填 | 说明                 |
592| ------------ | ---------- | ---- | -------------------- |
593| module        | number | 是   | 发送提示信息的模块标识。       |
594| tip        | number | 是   | 认证过程提示信息。       |
595
596## EventInfo<sup>(deprecated)</sup>
597
598type EventInfo = AuthResultInfo | TipInfo
599
600表示认证过程中事件信息的类型。
601
602该类型为下表类型中的联合类型。
603
604> **说明:**
605> 从 API version 9 开始支持,从 API version 11 开始废弃,请使用[UserAuthResult](#userauthresult10)替代。
606
607**系统能力**:SystemCapability.UserIAM.UserAuth.Core608
609| 类型    | 说明                       |
610| --------- | ----------------------- |
611| [AuthResultInfo](#authresultinfodeprecated)    | 获取到的认证结果信息。  |
612| [TipInfo](#tipinfodeprecated)    | 认证过程中的提示信息。      |
613
614## AuthEventKey<sup>(deprecated)</sup>
615
616type AuthEventKey = 'result' | 'tip'
617
618表示认证事件类型的关键字,作为[on](#ondeprecated)接口的的参数。
619
620该类型为下表类型取值中的联合类型。
621
622> **说明:**
623> 从 API version 9 开始支持,从 API version 11 开始废弃。
624
625**系统能力**:SystemCapability.UserIAM.UserAuth.Core626
627| 类型       | 说明                    |
628| ---------- | ----------------------- |
629| 'result' | [on](#ondeprecated)接口第一个参数为"result"时,[callback](#callbackdeprecated)回调返回认证的结果信息。 |
630| 'tip'    | [on](#ondeprecated)接口第一个参数为"tip"时,[callback](#callbackdeprecated)回调返回认证操作中的提示信息。 |
631
632## AuthEvent<sup>(deprecated)</sup>
633
634认证接口的异步回调对象。
635
636> **说明:**
637> 从 API version 9 开始支持,从 API version 11 开始废弃,请使用[IAuthCallback](#iauthcallback10)替代。
638
639### callback<sup>(deprecated)</sup>
640
641callback(result : EventInfo) : void
642
643通过该回调获取认证结果信息或认证过程中的提示信息。
644
645> **说明:**
646> 从 API version 9 开始支持,从 API version 11 开始废弃,请使用[onResult](#onresult10)替代。
647
648**系统能力**:SystemCapability.UserIAM.UserAuth.Core
649
650**参数:**
651
652| 参数名    | 类型                       | 必填 | 说明                           |
653| --------- | -------------------------- | ---- | ------------------------------ |
654| result    | [EventInfo](#eventinfodeprecated)     | 是   | 返回的认证结果信息或提示信息。  |
655
656**示例:**
657
658```ts
659import { userAuth } from '@kit.UserAuthenticationKit';
660
661let challenge = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]);
662let authType = userAuth.UserAuthType.FACE;
663let authTrustLevel = userAuth.AuthTrustLevel.ATL1;
664// 通过callback获取认证结果
665try {
666  let auth = userAuth.getAuthInstance(challenge, authType, authTrustLevel);
667  auth.on('result', {
668    callback: (result: userAuth.AuthResultInfo) => {
669      console.log('authV9 result ' + result.result);
670      console.log('authV9 token ' + result.token);
671      console.log('authV9 remainAttempts ' + result.remainAttempts);
672      console.log('authV9 lockoutDuration ' + result.lockoutDuration);
673    }
674  } as userAuth.AuthEvent);
675  auth.start();
676  console.log('authV9 start success');
677} catch (error) {
678  console.error('authV9 error = ' + error);
679  // do error
680}
681// 通过callback获取认证过程中的提示信息
682try {
683  let auth = userAuth.getAuthInstance(challenge, authType, authTrustLevel);
684  auth.on('tip', {
685    callback : (result : userAuth.TipInfo) => {
686      switch (result.tip) {
687        case userAuth.FaceTips.FACE_AUTH_TIP_TOO_BRIGHT:
688          // do something;
689        case userAuth.FaceTips.FACE_AUTH_TIP_TOO_DARK:
690          // do something;
691        default:
692          // do others
693      }
694    }
695  } as userAuth.AuthEvent);
696  auth.start();
697  console.log('authV9 start success');
698} catch (error) {
699  console.error('authV9 error = ' + error);
700  // do error
701}
702```
703
704## AuthInstance<sup>(deprecated)</sup>
705
706执行用户认证的对象。
707
708> **说明:**
709> 从 API version 9 开始支持,从 API version 10 开始废弃,请使用[UserAuthInstance](#userauthinstance10)替代。
710
711### on<sup>(deprecated)</sup>
712
713on : (name : AuthEventKey, callback : AuthEvent) => void
714
715订阅指定类型的用户认证事件。
716
717> **说明:**
718> - 从 API version 9 开始支持,从 API version 10 开始废弃。
719> - 使用获取到的[AuthInstance](#authinstancedeprecated)对象调用该接口进行订阅。
720
721**系统能力**:SystemCapability.UserIAM.UserAuth.Core
722
723**参数:**
724
725| 参数名    | 类型                        | 必填 | 说明                       |
726| --------- | -------------------------- | ---- | ------------------------- |
727| name  | [AuthEventKey](#autheventkeydeprecated) | 是   | 表示认证事件类型,取值为"result"时,回调函数返回认证结果;取值为"tip"时,回调函数返回认证过程中的提示信息。 |
728| callback  | [AuthEvent](#autheventdeprecated)   | 是   | 认证接口的回调函数,用于返回认证结果或认证过程中的提示信息。 |
729
730**错误码:**
731
732以下错误码的详细介绍请参见[用户认证错误码](errorcode-useriam.md)。
733
734| 错误码ID | 错误信息 |
735| -------- | ------- |
736| 401 | Incorrect parameters. |
737| 12500002 | General operation error. |
738
739**示例:**
740
741```ts
742import { userAuth } from '@kit.UserAuthenticationKit';
743
744let challenge = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]);
745let authType = userAuth.UserAuthType.FACE;
746let authTrustLevel = userAuth.AuthTrustLevel.ATL1;
747try {
748  let auth = userAuth.getAuthInstance(challenge, authType, authTrustLevel);
749  // 订阅认证结果
750  auth.on('result', {
751    callback: (result: userAuth.AuthResultInfo) => {
752      console.log('authV9 result ' + result.result);
753      console.log('authV9 token ' + result.token);
754      console.log('authV9 remainAttempts ' + result.remainAttempts);
755      console.log('authV9 lockoutDuration ' + result.lockoutDuration);
756    }
757  });
758  // 订阅认证过程中的提示信息
759  auth.on('tip', {
760    callback : (result : userAuth.TipInfo) => {
761      switch (result.tip) {
762        case userAuth.FaceTips.FACE_AUTH_TIP_TOO_BRIGHT:
763          // do something;
764        case userAuth.FaceTips.FACE_AUTH_TIP_TOO_DARK:
765          // do something;
766        default:
767          // do others
768      }
769    }
770  } as userAuth.AuthEvent);
771  auth.start();
772  console.log('authV9 start success');
773} catch (error) {
774  console.error('authV9 error = ' + error);
775  // do error
776}
777```
778
779### off<sup>(deprecated)</sup>
780
781off : (name : AuthEventKey) => void
782
783取消订阅特定类型的认证事件。
784
785> **说明:**
786> - 从 API version 9 开始支持,从 API version 10 开始废弃。
787> - 需要使用已经成功订阅事件的[AuthInstance](#authinstancedeprecated)对象调用该接口进行取消订阅。
788
789**系统能力**:SystemCapability.UserIAM.UserAuth.Core
790
791| 名称    | 类型                        | 必填 | 说明                       |
792| --------- | -------------------------- | ---- | ------------------------- |
793| name    | [AuthEventKey](#autheventkeydeprecated)      | 是   | 表示认证事件类型,取值为"result"时,取消订阅认证结果;取值为"tip"时,取消订阅认证过程中的提示信息。 |
794
795**错误码:**
796
797以下错误码的详细介绍请参见[用户认证错误码](errorcode-useriam.md)。
798
799| 错误码ID | 错误信息 |
800| -------- | ------- |
801| 401 | Incorrect parameters. |
802| 12500002 | General operation error. |
803
804**示例:**
805
806```ts
807import { userAuth } from '@kit.UserAuthenticationKit';
808
809let challenge = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]);
810let authType = userAuth.UserAuthType.FACE;
811let authTrustLevel = userAuth.AuthTrustLevel.ATL1;
812try {
813  let auth = userAuth.getAuthInstance(challenge, authType, authTrustLevel);
814  // 订阅认证结果
815  auth.on('result', {
816    callback: (result: userAuth.AuthResultInfo) => {
817      console.log('authV9 result ' + result.result);
818      console.log('authV9 token ' + result.token);
819      console.log('authV9 remainAttempts ' + result.remainAttempts);
820      console.log('authV9 lockoutDuration ' + result.lockoutDuration);
821    }
822  });
823  // 取消订阅结果
824  auth.off('result');
825  console.info('cancel subscribe authentication event success');
826} catch (error) {
827  console.error('cancel subscribe authentication event failed, error =' + error);
828  // do error
829}
830```
831
832### start<sup>(deprecated)</sup>
833
834start : () => void
835
836开始认证。
837
838> **说明:**
839> - 从 API version 9 开始支持,从 API version 10 开始废弃。
840> - 使用获取到的[AuthInstance](#authinstancedeprecated)对象调用该接口进行认证。
841
842**需要权限**:ohos.permission.ACCESS_BIOMETRIC
843
844**系统能力**:SystemCapability.UserIAM.UserAuth.Core
845
846**错误码:**
847
848以下错误码的详细介绍请参见[用户认证错误码](errorcode-useriam.md)。
849
850| 错误码ID | 错误信息 |
851| -------- | ------- |
852| 201 | Permission verification failed. |
853| 401 | Incorrect parameters. |
854| 12500001 | Authentication failed. |
855| 12500002 | General operation error. |
856| 12500003 | The operation is canceled. |
857| 12500004 | The operation is time-out.  |
858| 12500005 | The authentication type is not supported. |
859| 12500006 | The authentication trust level is not supported. |
860| 12500007 | The authentication task is busy. |
861| 12500009 | The authenticator is locked. |
862| 12500010 | The type of credential has not been enrolled. |
863
864**示例:**
865
866```ts
867import { userAuth } from '@kit.UserAuthenticationKit';
868
869let challenge = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]);
870let authType = userAuth.UserAuthType.FACE;
871let authTrustLevel = userAuth.AuthTrustLevel.ATL1;
872
873try {
874  let auth = userAuth.getAuthInstance(challenge, authType, authTrustLevel);
875  auth.start();
876  console.info('authV9 start auth success');
877} catch (error) {
878  console.error('authV9 start auth failed, error = ' + error);
879}
880```
881
882### cancel<sup>(deprecated)</sup>
883
884cancel : () => void
885
886取消认证。
887
888> **说明:**
889>
890> - 从 API version 9 开始支持,从 API version 10 开始废弃。
891> - 使用获取到的[AuthInstance](#authinstancedeprecated)对象调用该接口进行取消认证,此[AuthInstance](#authinstancedeprecated)需要是正在进行认证的对象。
892
893**需要权限**:ohos.permission.ACCESS_BIOMETRIC
894
895**系统能力**:SystemCapability.UserIAM.UserAuth.Core
896
897**错误码:**
898
899以下错误码的详细介绍请参见[用户认证错误码](errorcode-useriam.md)。
900
901| 错误码ID | 错误信息 |
902| -------- | ------- |
903| 201 | Permission verification failed. |
904| 401 | Incorrect parameters. |
905| 12500002 | General operation error. |
906
907**示例:**
908
909```ts
910import { userAuth } from '@kit.UserAuthenticationKit';
911
912let challenge = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]);
913let authType = userAuth.UserAuthType.FACE;
914let authTrustLevel = userAuth.AuthTrustLevel.ATL1;
915
916try {
917  let auth = userAuth.getAuthInstance(challenge, authType, authTrustLevel);
918  auth.cancel();
919  console.info('cancel auth success');
920} catch (error) {
921  console.error('cancel auth failed, error = ' + error);
922}
923```
924
925## userAuth.getAuthInstance<sup>(deprecated)</sup>
926
927getAuthInstance(challenge : Uint8Array, authType : UserAuthType, authTrustLevel : AuthTrustLevel): AuthInstance
928
929获取AuthInstance对象,用于执行用户身份认证。
930
931> **说明:**
932>
933> - 从 API version 9 开始支持,从 API version 10 开始废弃,请使用[getUserAuthInstance](#userauthgetuserauthinstance10)替代。
934> - 每个AuthInstance只能进行一次认证,若需要再次进行认证则需重新获取AuthInstance。
935
936
937**系统能力**:SystemCapability.UserIAM.UserAuth.Core
938
939**参数:**
940
941| 参数名         | 类型                                     | 必填 | 说明                     |
942| -------------- | ---------------------------------------- | ---- | ------------------------ |
943| challenge      | Uint8Array                               | 是   | 挑战值,最大长度为32字节,可以传Uint8Array([])。 |
944| authType       | [UserAuthType](#userauthtype8)           | 是   | 认证类型,当前支持FACE和FINGERPRINT。 |
945| authTrustLevel | [AuthTrustLevel](#authtrustlevel8)       | 是   | 认证信任等级。               |
946
947**返回值:**
948
949| 类型                                    | 说明         |
950| --------------------------------------- | ------------ |
951| [AuthInstance](#authinstancedeprecated) | 认证器对象。 |
952
953**错误码:**
954
955以下错误码的详细介绍请参见[用户认证错误码](errorcode-useriam.md)。
956
957| 错误码ID | 错误信息 |
958| -------- | ------- |
959| 401 | Incorrect parameters. |
960| 12500002 | General operation error. |
961| 12500005 | The authentication type is not supported. |
962| 12500006 | The authentication trust level is not supported. |
963
964**示例:**
965
966```ts
967import { userAuth } from '@kit.UserAuthenticationKit';
968
969let challenge = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]);
970let authType = userAuth.UserAuthType.FACE;
971let authTrustLevel = userAuth.AuthTrustLevel.ATL1;
972
973try {
974  let auth = userAuth.getAuthInstance(challenge, authType, authTrustLevel);
975  console.info('let auth instance success');
976} catch (error) {
977  console.error('get auth instance success failed, error = ' + error);
978}
979```
980
981## userAuth.getAvailableStatus<sup>9+</sup>
982
983getAvailableStatus(authType : UserAuthType, authTrustLevel : AuthTrustLevel): void
984
985查询指定类型和等级的认证能力是否支持。
986
987**需要权限**:ohos.permission.ACCESS_BIOMETRIC
988
989**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
990
991**系统能力**:SystemCapability.UserIAM.UserAuth.Core
992
993**参数:**
994
995| 参数名         | 类型                               | 必填 | 说明                       |
996| -------------- | ---------------------------------- | ---- | -------------------------- |
997| authType       | [UserAuthType](#userauthtype8)     | 是   | 认证类型。从 API version 11 开始支持PIN查询。|
998| authTrustLevel | [AuthTrustLevel](#authtrustlevel8) | 是   | 认证信任等级。       |
999
1000> **错误码返回顺序说明:**
1001>
1002> - 无对应执行器注册时,判断系统不支持该认证能力,需返回12500005。
1003> - 有对应执行器注册时,功能未禁用,但认证安全等级低于业务指定时,需返回12500006。
1004> - 有对应执行器注册时,功能未禁用,但用户没有注册凭据时,需返回12500010。
1005> - 有对应执行器注册时,功能未禁用,但密码过期时,需返回12500013。
1006
1007**错误码:**
1008
1009以下错误码的详细介绍请参见[用户认证错误码](errorcode-useriam.md)。
1010
1011| 错误码ID | 错误信息 |
1012| -------- | ------- |
1013| 201 | Permission verification failed. |
1014| 401 | Incorrect parameters. Possible causes: 1.Mandatory parameters are left unspecified. |
1015| 12500002 | General operation error. |
1016| 12500005 | The authentication type is not supported. |
1017| 12500006 | The authentication trust level is not supported. |
1018| 12500010 | The type of credential has not been enrolled. |
1019| 12500013 | Operation failed because of PIN expired. |
1020
1021**示例:**
1022
1023```ts
1024import { userAuth } from '@kit.UserAuthenticationKit';
1025
1026try {
1027  userAuth.getAvailableStatus(userAuth.UserAuthType.FACE, userAuth.AuthTrustLevel.ATL1);
1028  console.info('current auth trust level is supported');
1029} catch (error) {
1030  console.error('current auth trust level is not supported, error = ' + error);
1031}
1032```
1033
1034## UserAuthResultCode<sup>9+</sup>
1035
1036表示返回码的枚举。
1037
1038**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1039
1040**系统能力**:SystemCapability.UserIAM.UserAuth.Core
1041
1042| 名称                    |   值   | 说明                 |
1043| ----------------------- | ------ | -------------------- |
1044| SUCCESS                 | 12500000      | 执行成功。           |
1045| FAIL                    | 12500001      | 认证失败。           |
1046| GENERAL_ERROR           | 12500002      | 操作通用错误。       |
1047| CANCELED                | 12500003      | 操作取消。           |
1048| TIMEOUT                 | 12500004      | 操作超时。           |
1049| TYPE_NOT_SUPPORT        | 12500005      | 不支持的认证类型。   |
1050| TRUST_LEVEL_NOT_SUPPORT | 12500006      | 不支持的认证等级。   |
1051| BUSY                    | 12500007      | 忙碌状态。           |
1052| LOCKED                  | 12500009      | 认证器已锁定。       |
1053| NOT_ENROLLED            | 12500010      | 用户未录入认证信息。 |
1054| CANCELED_FROM_WIDGET<sup>10+</sup> | 12500011 | 当前的认证操作被用户从组件取消。返回这个错误码,表示使用应用自定义认证。 |
1055| PIN_EXPIRED<sup>12+</sup> | 12500013 | 当前的认证操作执行失败。返回这个错误码,表示系统锁屏密码过期。 |
1056
1057## UserAuth<sup>(deprecated)</sup>
1058
1059认证器对象。
1060
1061### constructor<sup>(deprecated)</sup>
1062
1063constructor()
1064
1065创建认证器对象。
1066
1067> **说明:**
1068> 从 API version 8 开始支持,从 API version 9 开始废弃,请使用[getAuthInstance](#userauthgetauthinstancedeprecated)替代。
1069
1070**系统能力**:SystemCapability.UserIAM.UserAuth.Core
1071
1072**示例:**
1073
1074```ts
1075import { userAuth } from '@kit.UserAuthenticationKit';
1076
1077let auth = new userAuth.UserAuth();
1078```
1079
1080### getVersion<sup>(deprecated)</sup>
1081
1082getVersion() : number
1083
1084获取认证器的版本信息。
1085
1086> **说明:**
1087> 从 API version 8 开始支持,从 API version 9 开始废弃。
1088
1089**需要权限**:ohos.permission.ACCESS_BIOMETRIC
1090
1091**系统能力**:SystemCapability.UserIAM.UserAuth.Core
1092
1093**返回值:**
1094
1095| 类型   | 说明                   |
1096| ------ | ---------------------- |
1097| number | 认证器版本信息。 |
1098
1099**示例:**
1100
1101```ts
1102import { userAuth } from '@kit.UserAuthenticationKit';
1103
1104let auth = new userAuth.UserAuth();
1105let version = auth.getVersion();
1106console.info('auth version = ' + version);
1107```
1108
1109### getAvailableStatus<sup>(deprecated)</sup>
1110
1111getAvailableStatus(authType : UserAuthType, authTrustLevel : AuthTrustLevel) : number
1112
1113查询指定类型和等级的认证能力是否支持。
1114
1115> **说明:**
1116> 从 API version 8 开始支持,从 API version 9 开始废弃,请使用[getAvailableStatus](#userauthgetavailablestatus9)替代。
1117
1118**需要权限**:ohos.permission.ACCESS_BIOMETRIC
1119
1120**系统能力**:SystemCapability.UserIAM.UserAuth.Core
1121
1122**参数:**
1123
1124| 参数名         | 类型                               | 必填 | 说明                       |
1125| -------------- | ---------------------------------- | ---- | -------------------------- |
1126| authType       | [UserAuthType](#userauthtype8)     | 是   | 认证类型,当前支持FACE和FINGERPRINT。 |
1127| authTrustLevel | [AuthTrustLevel](#authtrustlevel8) | 是   | 认证信任等级。       |
1128
1129**返回值:**
1130
1131| 类型   | 说明                                                         |
1132| ------ | ------------------------------------------------------------ |
1133| number | 查询结果,结果为SUCCESS时表示支持,其他返回值参见[ResultCode](#resultcodedeprecated)。 |
1134
1135**示例:**
1136
1137```ts
1138import { userAuth } from '@kit.UserAuthenticationKit';
1139
1140let auth = new userAuth.UserAuth();
1141let checkCode = auth.getAvailableStatus(userAuth.UserAuthType.FACE, userAuth.AuthTrustLevel.ATL1);
1142if (checkCode == userAuth.ResultCode.SUCCESS) {
1143  console.info('check auth support success');
1144} else {
1145  console.error('check auth support fail, code = ' + checkCode);
1146}
1147```
1148
1149### auth<sup>(deprecated)</sup>
1150
1151auth(challenge: Uint8Array, authType: UserAuthType, authTrustLevel: AuthTrustLevel, callback: IUserAuthCallback): Uint8Array
1152
1153执行用户认证,使用回调函数返回结果。
1154
1155> **说明:**
1156> 从 API version 8 开始支持,从 API version 9 开始废弃,建议使用[start](#startdeprecated)代替。
1157
1158**需要权限**:ohos.permission.ACCESS_BIOMETRIC
1159
1160**系统能力**:SystemCapability.UserIAM.UserAuth.Core
1161
1162**参数:**
1163
1164| 参数名         | 类型                                     | 必填 | 说明                     |
1165| -------------- | ---------------------------------------- | ---- | ------------------------ |
1166| challenge      | Uint8Array                               | 是   | 挑战值,可以传Uint8Array([])。 |
1167| authType       | [UserAuthType](#userauthtype8)           | 是   | 认证类型,当前支持FACE和FINGERPRINT。 |
1168| authTrustLevel | [AuthTrustLevel](#authtrustlevel8)       | 是   | 认证信任等级。             |
1169| callback       | [IUserAuthCallback](#iuserauthcallbackdeprecated) | 是   | 回调函数。        |
1170
1171**返回值:**
1172
1173| 类型       | 说明                                                         |
1174| ---------- | ------------------------------------------------------------ |
1175| Uint8Array | ContextId,作为取消认证[cancelAuth](#cancelauthdeprecated)接口的入参。 |
1176
1177**示例:**
1178
1179```ts
1180import { userAuth } from '@kit.UserAuthenticationKit';
1181
1182let auth = new userAuth.UserAuth();
1183let challenge = new Uint8Array([]);
1184auth.auth(challenge, userAuth.UserAuthType.FACE, userAuth.AuthTrustLevel.ATL1, {
1185  onResult: (result, extraInfo) => {
1186    try {
1187      console.info('auth onResult result = ' + result);
1188      console.info('auth onResult extraInfo = ' + JSON.stringify(extraInfo));
1189      if (result == userAuth.ResultCode.SUCCESS) {
1190        // 此处添加认证成功逻辑
1191      } else {
1192        // 此处添加认证失败逻辑
1193      }
1194    } catch (error) {
1195      console.error('auth onResult error = ' + error);
1196    }
1197  }
1198});
1199```
1200
1201### cancelAuth<sup>(deprecated)</sup>
1202
1203cancelAuth(contextID : Uint8Array) : number
1204
1205表示通过contextID取消本次认证操作。
1206
1207> **说明:**
1208> 从 API version 8 开始支持,从 API version 9 开始废弃,建议使用[cancel](#canceldeprecated)代替。
1209
1210**需要权限**:ohos.permission.ACCESS_BIOMETRIC
1211
1212**系统能力**:SystemCapability.UserIAM.UserAuth.Core
1213
1214**参数:**
1215
1216| 参数名    | 类型       | 必填 | 说明                                       |
1217| --------- | ---------- | ---- | ------------------------------------------ |
1218| contextID | Uint8Array | 是   | 上下文的标识,通过[auth](#authdeprecated)接口获取。 |
1219
1220**返回值:**
1221
1222| 类型   | 说明                     |
1223| ------ | ------------------------ |
1224| number | 取消认证的结果,结果为SUCCESS时表示取消成功,其他返回值参见[ResultCode](#resultcodedeprecated)。 |
1225
1226**示例:**
1227
1228```ts
1229import { userAuth } from '@kit.UserAuthenticationKit';
1230
1231// contextId可通过auth接口获取,此处直接定义
1232let contextId = new Uint8Array([0, 1, 2, 3, 4, 5, 6, 7]);
1233let auth = new userAuth.UserAuth();
1234let cancelCode = auth.cancelAuth(contextId);
1235if (cancelCode == userAuth.ResultCode.SUCCESS) {
1236  console.info('cancel auth success');
1237} else {
1238  console.error('cancel auth fail');
1239}
1240```
1241
1242## IUserAuthCallback<sup>(deprecated)</sup>
1243
1244返回认证结果的回调对象。
1245
1246> **说明:**
1247> 从 API version 8 开始支持,从 API version 9 开始废弃,建议使用[AuthEvent](#autheventdeprecated)代替。
1248
1249### onResult<sup>(deprecated)</sup>
1250
1251onResult: (result : number, extraInfo : AuthResult) => void
1252
1253回调函数,返回认证结果。
1254
1255> **说明:**
1256> 从 API version 8 开始支持,从 API version 9 开始废弃,建议使用[callback](#callbackdeprecated)代替。
1257
1258**系统能力**:SystemCapability.UserIAM.UserAuth.Core
1259
1260**参数:**
1261
1262| 参数名    | 类型                       | 必填 | 说明        |
1263| --------- | -------------------------- | ---- | ------------------------------------------------ |
1264| result    | number           | 是   | 认证结果,参见[ResultCode](#resultcodedeprecated)。 |
1265| extraInfo | [AuthResult](#authresultdeprecated) | 是   | 扩展信息,不同情况下的具体信息,<br/>如果身份验证通过,则在extraInfo中返回用户认证令牌,<br/>如果身份验证失败,则在extraInfo中返回剩余的用户认证次数,<br/>如果身份验证执行器被锁定,则在extraInfo中返回冻结时间。 |
1266
1267**示例:**
1268
1269```ts
1270import { userAuth } from '@kit.UserAuthenticationKit';
1271
1272let auth = new userAuth.UserAuth();
1273let challenge = new Uint8Array([]);
1274auth.auth(challenge, userAuth.UserAuthType.FACE, userAuth.AuthTrustLevel.ATL1, {
1275  onResult: (result, extraInfo) => {
1276    try {
1277      console.info('auth onResult result = ' + result);
1278      console.info('auth onResult extraInfo = ' + JSON.stringify(extraInfo));
1279      if (result == userAuth.ResultCode.SUCCESS) {
1280        // 此处添加认证成功逻辑
1281      }  else {
1282        // 此处添加认证失败逻辑
1283      }
1284    } catch (error) {
1285      console.error('auth onResult error = ' + error);
1286    }
1287  }
1288});
1289```
1290
1291### onAcquireInfo<sup>(deprecated)</sup>
1292
1293onAcquireInfo ?: (module : number, acquire : number, extraInfo : any) => void
1294
1295回调函数,返回认证过程中的提示信息,非必须实现。
1296
1297> **说明:**
1298> 从 API version 8 开始支持,从 API version 9 开始废弃,建议使用[callback](#callbackdeprecated)代替。
1299
1300**系统能力**:SystemCapability.UserIAM.UserAuth.Core
1301
1302**参数:**
1303
1304| 参数名    | 类型   | 必填 | 说明                           |
1305| --------- | ------ | ---- | ------------------------------ |
1306| module    | number | 是   | 发送提示信息的模块标识。             |
1307| acquire   | number | 是   | 认证执过程中的提示信息。 |
1308| extraInfo | any    | 是   | 预留字段。                     |
1309
1310**示例:**
1311
1312```ts
1313import { userAuth } from '@kit.UserAuthenticationKit';
1314
1315let auth = new userAuth.UserAuth();
1316let challenge = new Uint8Array([]);
1317auth.auth(challenge, userAuth.UserAuthType.FACE, userAuth.AuthTrustLevel.ATL1, {
1318  onResult: (result, extraInfo) => {
1319    try {
1320      console.info('auth onResult result = ' + result);
1321      console.info('auth onResult extraInfo = ' + JSON.stringify(extraInfo));
1322      if (result == userAuth.ResultCode.SUCCESS) {
1323        // 此处添加认证成功逻辑
1324      }  else {
1325        // 此处添加认证失败逻辑
1326      }
1327    } catch (error) {
1328      console.error('auth onResult error = ' + error);
1329    }
1330  },
1331  onAcquireInfo: (module, acquire, extraInfo : userAuth.AuthResult) => {
1332    try {
1333      console.info('auth onAcquireInfo module = ' + module);
1334      console.info('auth onAcquireInfo acquire = ' + acquire);
1335      console.info('auth onAcquireInfo extraInfo = ' + JSON.stringify(extraInfo));
1336    } catch (error) {
1337      console.error('auth onAcquireInfo error = ' + error);
1338    }
1339  }
1340});
1341```
1342
1343## AuthResult<sup>(deprecated)</sup>
1344
1345表示认证结果的对象。
1346
1347> **说明:**
1348> 从 API version 8 开始支持,从 API version 9 开始废弃,建议使用[AuthResultInfo](#authresultinfodeprecated)代替。
1349
1350**系统能力**:SystemCapability.UserIAM.UserAuth.Core
1351
1352| 名称         | 类型   | 必填 | 说明                 |
1353| ------------ | ---------- | ---- | -------------------|
1354| token        | Uint8Array | 否   | 认证通过的令牌信息。 |
1355| remainTimes  | number     | 否   | 剩余的认证操作次数。 |
1356| freezingTime | number     | 否   | 认证操作的冻结时间。 |
1357
1358## ResultCode<sup>(deprecated)</sup>
1359
1360表示返回码的枚举。
1361
1362> **说明:**
1363> 从 API version 9 开始废弃,建议使用[UserAuthResultCode](#userauthresultcode9)代替。
1364
1365**系统能力**:SystemCapability.UserIAM.UserAuth.Core
1366
1367| 名称                    | 值 | 说明                 |
1368| ----------------------- | ------ | -------------------- |
1369| SUCCESS                 | 0      | 执行成功。           |
1370| FAIL                    | 1      | 认证失败。           |
1371| GENERAL_ERROR           | 2      | 操作通用错误。       |
1372| CANCELED                | 3      | 操作取消。           |
1373| TIMEOUT                 | 4      | 操作超时。           |
1374| TYPE_NOT_SUPPORT        | 5      | 不支持的认证类型。   |
1375| TRUST_LEVEL_NOT_SUPPORT | 6      | 不支持的认证等级。   |
1376| BUSY                    | 7      | 忙碌状态。           |
1377| INVALID_PARAMETERS      | 8      | 无效参数。           |
1378| LOCKED                  | 9      | 认证器已锁定。       |
1379| NOT_ENROLLED            | 10     | 用户未录入认证信息。 |
1380
1381## FaceTips<sup>(deprecated)</sup>
1382
1383表示人脸认证过程中提示码的枚举。
1384
1385> **说明:**
1386> 从 API version 8 开始支持,从 API version 11 开始废弃。
1387
1388**系统能力**:SystemCapability.UserIAM.UserAuth.Core
1389
1390| 名称                          |   值   |    说明                             |
1391| ----------------------------- | ------ | ------------------------------------ |
1392| FACE_AUTH_TIP_TOO_BRIGHT      | 1      | 光线太强,获取的图像太亮。           |
1393| FACE_AUTH_TIP_TOO_DARK        | 2      | 光线太暗,获取的图像太暗。           |
1394| FACE_AUTH_TIP_TOO_CLOSE       | 3      | 人脸距离设备过近。                   |
1395| FACE_AUTH_TIP_TOO_FAR         | 4      | 人脸距离设备过远。                   |
1396| FACE_AUTH_TIP_TOO_HIGH        | 5      | 设备太高,仅获取到人脸上部。         |
1397| FACE_AUTH_TIP_TOO_LOW         | 6      | 设备太低,仅获取到人脸下部。         |
1398| FACE_AUTH_TIP_TOO_RIGHT       | 7      | 设备太靠右,仅获取到人脸右部。       |
1399| FACE_AUTH_TIP_TOO_LEFT        | 8      | 设备太靠左,仅获取到人脸左部。       |
1400| FACE_AUTH_TIP_TOO_MUCH_MOTION | 9      | 在图像采集过程中,用户人脸移动太快。 |
1401| FACE_AUTH_TIP_POOR_GAZE       | 10     | 没有正视摄像头。                     |
1402| FACE_AUTH_TIP_NOT_DETECTED    | 11     | 没有检测到人脸信息。                 |
1403
1404
1405## FingerprintTips<sup>(deprecated)</sup>
1406
1407表示指纹认证过程中提示码的枚举。
1408
1409> **说明:**
1410> 从 API version 8 开始支持,从 API version 11 开始废弃。
1411
1412**系统能力**:SystemCapability.UserIAM.UserAuth.Core
1413
1414| 名称                              |   值   | 说明                                               |
1415| --------------------------------- | ------ | -------------------------------------------------- |
1416| FINGERPRINT_AUTH_TIP_GOOD         | 0      | 获取的指纹图像良好。                               |
1417| FINGERPRINT_AUTH_TIP_DIRTY        | 1      | 由于传感器上可疑或检测到的污垢,指纹图像噪音过大。 |
1418| FINGERPRINT_AUTH_TIP_INSUFFICIENT | 2      | 由于检测到的情况,指纹图像噪声太大,无法处理。     |
1419| FINGERPRINT_AUTH_TIP_PARTIAL      | 3      | 仅检测到部分指纹图像。                             |
1420| FINGERPRINT_AUTH_TIP_TOO_FAST     | 4      | 快速移动,指纹图像不完整。                         |
1421| FINGERPRINT_AUTH_TIP_TOO_SLOW     | 5      | 缺少运动,指纹图像无法读取。                       |
1422
1423
1424## UserAuthType<sup>8+</sup>
1425
1426表示身份认证的凭据类型枚举。
1427
1428**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1429
1430**系统能力**:SystemCapability.UserIAM.UserAuth.Core
1431
1432| 名称        | 值   | 说明       |
1433| ----------- | ---- | ---------- |
1434| PIN<sup>10+</sup>         | 1    | 口令认证。 |
1435| FACE        | 2    | 人脸认证。 |
1436| FINGERPRINT | 4    | 指纹认证。 |
1437
1438## AuthTrustLevel<sup>8+</sup>
1439
1440表示认证结果的信任等级枚举。
1441
1442**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
1443
1444**系统能力**:SystemCapability.UserIAM.UserAuth.Core
1445
1446| 名称 | 值    | 说明                                                         |
1447| ---- | ----- | ------------------------------------------------------------ |
1448| ATL1 | 10000 | 认证结果的信任等级级别1,代表该认证方案能够识别用户个体,有一定的活体检测能力。常用的业务场景有业务风控、一般个人数据查询等。 |
1449| ATL2 | 20000 | 认证结果的信任等级级别2,代表该认证方案能够精确识别用户个体,有一定的活体检测能力。常用的业务场景有维持设备解锁状态,应用登录等。 |
1450| ATL3 | 30000 | 认证结果的信任等级级别3,代表该认证方案能够精确识别用户个体,有较强的活体检测能力。常用的业务场景有设备解锁等。 |
1451| ATL4 | 40000 | 认证结果的信任等级级别4,代表该认证方案能够高精度的识别用户个体,有很强的活体检测能力。常用的业务场景有小额支付等。 |
1452
1453## userAuth.getAuthenticator<sup>(deprecated)</sup>
1454
1455getAuthenticator(): Authenticator
1456
1457获取Authenticator对象,用于执行用户身份认证。
1458
1459> **说明:**
1460> 从 API version 8 开始废弃,建议使用[constructor](#constructordeprecated)替代。
1461
1462**系统能力**:SystemCapability.UserIAM.UserAuth.Core
1463
1464**返回值:**
1465
1466| 类型                                      | 说明         |
1467| ----------------------------------------- | ------------ |
1468| [Authenticator](#authenticatordeprecated) | 认证器对象。 |
1469
1470**示例:**
1471  ```ts
1472  import { userAuth } from '@kit.UserAuthenticationKit';
1473  
1474  let authenticator = userAuth.getAuthenticator();
1475  ```
1476
1477## Authenticator<sup>(deprecated)</sup>
1478
1479认证器对象。
1480
1481> **说明:**
1482> 从 API version 8 开始废弃,建议使用[UserAuth](#userauthdeprecated)替代。
1483
1484### execute<sup>(deprecated)</sup>
1485
1486execute(type: AuthType, level: SecureLevel, callback: AsyncCallback&lt;number&gt;): void
1487
1488执行用户认证,使用callback方式作为异步方法。
1489
1490> **说明:**
1491> 从 API version 8 开始废弃,建议使用[auth](#authdeprecated)替代。
1492
1493**需要权限**:ohos.permission.ACCESS_BIOMETRIC
1494
1495**系统能力**:SystemCapability.UserIAM.UserAuth.Core
1496
1497**参数:**
1498
1499| 参数名   | 类型                        | 必填 | 说明                                                                                                                    |
1500| -------- | --------------------------- | ---- |-----------------------------------------------------------------------------------------------------------------------|
1501| type     | AuthType                      | 是   | 认证类型,当前只支持"FACE_ONLY"。<br/>ALL为预留参数。当前版本暂不支持ALL类型的认证。                                                                 |
1502| level    | SecureLevel  | 是   | 安全级别,对应认证的安全级别,有效值为"S1"(最低)、"S2"、"S3"、"S4"(最高)。<br/>具备3D人脸识别能力的设备支持"S3"及以下安全级别的认证。<br/>具备2D人脸识别能力的设备支持"S2"及以下安全级别的认证。 |
1503| callback | AsyncCallback&lt;number&gt; | 是 | 回调函数。number表示认证结果,参见[AuthenticationResult](#authenticationresultdeprecated)。 |
1504
1505**示例:**
1506
1507```ts
1508import { userAuth } from '@kit.UserAuthenticationKit';
1509
1510let authenticator = userAuth.getAuthenticator();
1511authenticator.execute('FACE_ONLY', 'S2', (error, code)=>{
1512  if (code === userAuth.ResultCode.SUCCESS) {
1513    console.info('auth success');
1514    return;
1515  }
1516  console.error('auth fail, code = ' + code);
1517});
1518```
1519
1520
1521### execute<sup>(deprecated)</sup>
1522
1523execute(type : AuthType, level : SecureLevel): Promise&lt;number&gt;
1524
1525执行用户认证,使用promise方式作为异步方法。
1526
1527> **说明:**
1528> 从 API version 8 开始废弃,建议使用[auth](#authdeprecated)替代。
1529
1530**需要权限**:ohos.permission.ACCESS_BIOMETRIC
1531
1532**系统能力**:SystemCapability.UserIAM.UserAuth.Core
1533
1534**参数:**
1535
1536| 参数名 | 类型   | 必填 | 说明                                                                                                                    |
1537| ------ | ------ | ---- |-----------------------------------------------------------------------------------------------------------------------|
1538| type   | AuthType | 是   | 认证类型,当前只支持"FACE_ONLY"。<br/>ALL为预留参数。当前版本暂不支持ALL类型的认证。                                                                 |
1539| level  | SecureLevel | 是   | 安全级别,对应认证的安全级别,有效值为"S1"(最低)、"S2"、"S3"、"S4"(最高)。<br/>具备3D人脸识别能力的设备支持"S3"及以下安全级别的认证。<br/>具备2D人脸识别能力的设备支持"S2"及以下安全级别的认证。 |
1540
1541**返回值:**
1542
1543| 类型                  | 说明                                                         |
1544| --------------------- | ------------------------------------------------------------ |
1545| Promise&lt;number&gt; | 返回携带一个number的Promise。number&nbsp;为认证结果,参见[AuthenticationResult](#authenticationresultdeprecated)。 |
1546
1547**示例:**
1548
1549```ts
1550import { userAuth } from '@kit.UserAuthenticationKit';
1551
1552try {
1553  let authenticator = userAuth.getAuthenticator();
1554  authenticator.execute('FACE_ONLY', 'S2').then((code)=>{
1555    console.info('auth success');
1556  })
1557} catch (error) {
1558  console.error('auth fail, code = ' + error);
1559}
1560```
1561
1562## AuthenticationResult<sup>(deprecated)</sup>
1563
1564表示认证结果的枚举。
1565
1566> **说明:**
1567> 从 API version 8 开始废弃,建议使用[ResultCode](#resultcodedeprecated)替代。
1568
1569**系统能力**:SystemCapability.UserIAM.UserAuth.Core
1570
1571| 名称               |   值   | 说明                       |
1572| ------------------ | ------ | -------------------------- |
1573| NO_SUPPORT         | -1     | 设备不支持当前的认证方式。 |
1574| SUCCESS            | 0      | 认证成功。                 |
1575| COMPARE_FAILURE    | 1      | 比对失败。                 |
1576| CANCELED           | 2      | 用户取消认证。             |
1577| TIMEOUT            | 3      | 认证超时。                 |
1578| CAMERA_FAIL        | 4      | 开启相机失败。             |
1579| BUSY               | 5      | 认证服务忙,请稍后重试。   |
1580| INVALID_PARAMETERS | 6      | 认证参数无效。             |
1581| LOCKED             | 7      | 认证失败次数过多,已锁定。 |
1582| NOT_ENROLLED       | 8      | 未录入认证凭据。           |
1583| GENERAL_ERROR      | 100    | 其他错误。                 |
1584
1585