• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.userIAM.userAuth (用户认证)
2
3提供用户认证能力,可应用于设备解锁、支付、应用登录等身份认证场景。
4
5> **说明:**
6> 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
7
8
9## 导入模块
10
11```js
12import userIAM_userAuth from '@ohos.userIAM.userAuth';
13```
14
15## AuthResultInfo<sup>9+</sup>
16
17表示认证结果信息。
18
19**系统能力**:以下各项对应的系统能力均为SystemCapability.UserIAM.UserAuth.Core20
21| 名称         | 类型   | 必填 | 说明                 |
22| ------------ | ---------- | ---- | -------------------- |
23| result        | number | 是   | 认证结果。       |
24| token        | Uint8Array | 否   | 用户身份认证通过的凭证。 |
25| remainAttempts  | number     | 否   | 剩余的认证尝试次数。 |
26| lockoutDuration | number     | 否   | 认证操作的锁定时长,时间单位为毫秒ms。 |
27
28## TipInfo<sup>9+</sup>
29
30表示认证过程中的提示信息。
31
32**系统能力**:以下各项对应的系统能力均为SystemCapability.UserIAM.UserAuth.Core33
34| 名称         | 类型   | 必填 | 说明                 |
35| ------------ | ---------- | ---- | -------------------- |
36| module        | number | 是   | 发送提示信息的模块标识。       |
37| tip        | number | 是   | 认证过程提示信息。       |
38
39## EventInfo<sup>9+</sup>
40
41表示认证过程中事件信息的类型。
42
43**系统能力**:以下各项对应的系统能力均为SystemCapability.UserIAM.UserAuth.Core44
45| 取值类型    | 说明                       |
46| --------- | ----------------------- |
47| [AuthResultInfo](#authresultinfo9)    | 获取到的认证结果信息。  |
48| [TipInfo](#tipinfo9)    | 认证过程中的提示信息。      |
49
50## AuthEventKey<sup>9+</sup>
51
52表示认证事件类型的关键字,作为[on](#on9)接口的的参数。
53
54| 取值类型       | 说明                    |
55| ---------- | ----------------------- |
56| "result" | [on](#on9)接口第一个参数为"result"时,[callback](#callback9)回调返回认证的结果信息。 |
57| "tip"    | [on](#on9)接口第一个参数为"tip"时,[callback](#callback9)回调返回认证操作中的提示信息。 |
58
59## AuthEvent<sup>9+</sup>
60
61认证接口的异步回调对象。
62
63### callback<sup>9+</sup>
64
65callback(result : EventInfo) : void
66
67通过该回调获取认证结果信息或认证过程中的提示信息。
68
69**系统能力**:SystemCapability.UserIAM.UserAuth.Core
70
71**参数:**
72
73| 参数名    | 类型                       | 必填 | 说明                           |
74| --------- | -------------------------- | ---- | ------------------------------ |
75| result    | [EventInfo](#eventinfo9)     | 是   | 返回的认证结果信息或提示信息。  |
76
77**示例:**
78
79```js
80import userIAM_userAuth from '@ohos.userIAM.userAuth';
81
82let challenge = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]);
83let authType = userIAM_userAuth.UserAuthType.FACE;
84let authTrustLevel = userIAM_userAuth.AuthTrustLevel.ATL1;
85// 通过callback获取认证结果
86try {
87    let auth = userIAM_userAuth.getAuthInstance(challenge, authType, authTrustLevel);
88    auth.on("result", {
89        callback: (result: userIAM_userAuth.AuthResultInfo) => {
90            console.log("authV9 result " + result.result);
91            console.log("authV9 token " + result.token);
92            console.log("authV9 remainAttempts " + result.remainAttempts);
93            console.log("authV9 lockoutDuration " + result.lockoutDuration);
94        }
95    });
96    auth.start();
97    console.log("authV9 start success");
98} catch (error) {
99    console.log("authV9 error = " + error);
100    // do error
101}
102// 通过callback获取认证过程中的提示信息
103try {
104    let auth = userIAM_userAuth.getAuthInstance(challenge, authType, authTrustLevel);
105    auth.on("tip", {
106        callback : (result : userIAM_userAuth.TipInfo) => {
107            switch (result.tip) {
108                case userIAM_userAuth.FaceTips.FACE_AUTH_TIP_TOO_BRIGHT:
109                // do something;
110                case userIAM_userAuth.FaceTips.FACE_AUTH_TIP_TOO_DARK:
111                // do something;
112                default:
113                // do others
114            }
115        }
116    });
117    auth.start();
118    console.log("authV9 start success");
119} catch (error) {
120    console.log("authV9 error = " + error);
121    // do error
122}
123```
124
125## AuthInstance<sup>9+</sup>
126
127执行用户认证的对象。
128
129### on<sup>9+</sup>
130
131on : (name : AuthEventKey, callback : AuthEvent) => void
132
133订阅指定类型的用户认证事件。
134
135> **说明:**
136> 使用获取到的[AuthInstance](#authinstance9)对象调用该接口进行订阅。
137
138**系统能力**:SystemCapability.UserIAM.UserAuth.Core
139
140**参数:**
141
142| 参数名    | 类型                        | 必填 | 说明                       |
143| --------- | -------------------------- | ---- | ------------------------- |
144| name  | [AuthEventKey](#autheventkey9) | 是   | 表示认证事件类型,取值为"result"时,回调函数返回认证结果;取值为"tip"时,回调函数返回认证过程中的提示信息。 |
145| callback  | [AuthEvent](#authevent9)   | 是   | 认证接口的回调函数,用于返回认证结果或认证过程中的提示信息。 |
146
147以下错误码的详细介绍请参见[用户认证错误码](../errorcodes/errorcode-useriam.md)
148
149**错误码:**
150
151| 错误码ID | 错误信息 |
152| -------- | ------- |
153| 401 | Incorrect parameters. |
154| 12500002 | General operation error. |
155
156**示例:**
157
158```js
159import userIAM_userAuth from '@ohos.userIAM.userAuth';
160
161let challenge = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]);
162let authType = userIAM_userAuth.UserAuthType.FACE;
163let authTrustLevel = userIAM_userAuth.AuthTrustLevel.ATL1;
164try {
165    let auth = userIAM_userAuth.getAuthInstance(challenge, authType, authTrustLevel);
166    // 订阅认证结果
167    auth.on("result", {
168        callback: (result: userIAM_userAuth.AuthResultInfo) => {
169            console.log("authV9 result " + result.result);
170            console.log("authV9 token " + result.token);
171            console.log("authV9 remainAttempts " + result.remainAttempts);
172            console.log("authV9 lockoutDuration " + result.lockoutDuration);
173        }
174    });
175    // 订阅认证过程中的提示信息
176    auth.on("tip", {
177        callback : (result : userIAM_userAuth.TipInfo) => {
178            switch (result.tip) {
179                case userIAM_userAuth.FaceTips.FACE_AUTH_TIP_TOO_BRIGHT:
180                // do something;
181                case userIAM_userAuth.FaceTips.FACE_AUTH_TIP_TOO_DARK:
182                // do something;
183                default:
184                // do others
185            }
186        }
187    });
188    auth.start();
189    console.log("authV9 start success");
190} catch (error) {
191    console.log("authV9 error = " + error);
192    // do error
193}
194```
195
196### off<sup>9+</sup>
197
198off : (name : AuthEventKey) => void
199
200取消订阅特定类型的认证事件。
201
202> **说明:**
203> 需要使用已经成功订阅事件的[AuthInstance](#authinstance9)对象调用该接口进行取消订阅。
204
205**系统能力**:SystemCapability.UserIAM.UserAuth.Core
206
207| 名称    | 类型                        | 必填 | 说明                       |
208| --------- | -------------------------- | ---- | ------------------------- |
209| name    | [AuthEventKey](#autheventkey9)      | 是   | 表示认证事件类型,取值为"result"时,取消订阅认证结果;取值为"tip"时,取消订阅认证过程中的提示信息。 |
210
211以下错误码的详细介绍请参见[用户认证错误码](../errorcodes/errorcode-useriam.md)
212
213**错误码:**
214
215| 错误码ID | 错误信息 |
216| -------- | ------- |
217| 401 | Incorrect parameters. |
218| 12500002 | General operation error. |
219
220**示例:**
221
222```js
223import userIAM_userAuth from '@ohos.userIAM.userAuth';
224
225let challenge = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]);
226let authType = userIAM_userAuth.UserAuthType.FACE;
227let authTrustLevel = userIAM_userAuth.AuthTrustLevel.ATL1;
228let auth;
229try {
230    auth = userIAM_userAuth.getAuthInstance(challenge, authType, authTrustLevel);
231    console.log("get auth instance success");
232} catch (error) {
233    console.log("get auth instance failed" + error);
234}
235
236try {
237    // 订阅认证结果
238    auth.on("result", {
239        callback: (result: userIAM_userAuth.AuthResultInfo) => {
240            console.log("authV9 result " + result.result);
241            console.log("authV9 token " + result.token);
242            console.log("authV9 remainAttempts " + result.remainAttempts);
243            console.log("authV9 lockoutDuration " + result.lockoutDuration);
244        }
245    });
246    console.log("subscribe authentication event success");
247} catch (error) {
248    console.log("subscribe authentication event failed " + error);
249}
250// 取消订阅认证结果
251try {
252    auth.off("result");
253    console.info("cancel subscribe authentication event success");
254} catch (error) {
255    console.info("cancel subscribe authentication event failed, error = " + error);
256}
257```
258
259### start<sup>9+</sup>
260
261start : () => void
262
263开始认证。
264
265> **说明:**
266> 使用获取到的[AuthInstance](#authinstance9)对象调用该接口进行认证。
267
268**需要权限**:ohos.permission.ACCESS_BIOMETRIC
269
270**系统能力**:SystemCapability.UserIAM.UserAuth.Core
271
272以下错误码的详细介绍请参见[用户认证错误码](../errorcodes/errorcode-useriam.md)
273
274**错误码:**
275
276| 错误码ID | 错误信息 |
277| -------- | ------- |
278| 201 | Permission verification failed. |
279| 401 | Incorrect parameters. |
280| 12500001 | Authentication failed. |
281| 12500002 | General operation error. |
282| 12500003 | The operation is canceled. |
283| 12500004 | The operation is time-out. |
284| 12500005 | The authentication type is not supported. |
285| 12500006 | The authentication trust level is not supported. |
286| 12500007 | The authentication task is busy. |
287| 12500009 | The authenticator is locked. |
288| 12500010 | The type of credential has not been enrolled. |
289
290**示例:**
291
292```js
293import userIAM_userAuth from '@ohos.userIAM.userAuth';
294
295let challenge = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]);
296let authType = userIAM_userAuth.UserAuthType.FACE;
297let authTrustLevel = userIAM_userAuth.AuthTrustLevel.ATL1;
298
299try {
300    let auth = userIAM_userAuth.getAuthInstance(challenge, authType, authTrustLevel);
301    auth.start();
302    console.info("authV9 start auth success");
303} catch (error) {
304    console.info("authV9 start auth failed, error = " + error);
305}
306```
307
308### cancel<sup>9+</sup>
309
310cancel : () => void
311
312取消认证。
313
314> **说明:**
315> 使用获取到的[AuthInstance](#authinstance9)对象调用该接口进行取消认证,此[AuthInstance](#authinstance9)需要是正在进行认证的对象。
316
317**需要权限**:ohos.permission.ACCESS_BIOMETRIC
318
319**系统能力**:SystemCapability.UserIAM.UserAuth.Core
320
321以下错误码的详细介绍请参见[用户认证错误码](../errorcodes/errorcode-useriam.md)
322
323**错误码:**
324
325| 错误码ID | 错误信息 |
326| -------- | ------- |
327| 201 | Permission verification failed. |
328| 401 | Incorrect parameters. |
329| 12500002 | General operation error. |
330
331**示例:**
332
333```js
334import userIAM_userAuth from '@ohos.userIAM.userAuth';
335
336let challenge = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]);
337let authType = userIAM_userAuth.UserAuthType.FACE;
338let authTrustLevel = userIAM_userAuth.AuthTrustLevel.ATL1;
339
340try {
341    let auth = userIAM_userAuth.getAuthInstance(challenge, authType, authTrustLevel);
342    auth.cancel();
343    console.info("cancel auth success");
344} catch (error) {
345    console.info("cancel auth failed, error = " + error);
346}
347```
348
349## userIAM_userAuth.getAuthInstance<sup>9+</sup>
350
351getAuthInstance(challenge : Uint8Array, authType : UserAuthType, authTrustLevel : AuthTrustLevel): AuthInstance
352
353获取AuthInstance对象,用于执行用户身份认证。
354
355> **说明:**
356> 每个AuthInstance只能进行一次认证,若需要再次进行认证则需重新获取AuthInstance。
357
358**系统能力**:SystemCapability.UserIAM.UserAuth.Core
359
360**参数:**
361
362| 参数名         | 类型                                     | 必填 | 说明                     |
363| -------------- | ---------------------------------------- | ---- | ------------------------ |
364| challenge      | Uint8Array                               | 是   | 挑战值,最大长度为32字节,可以填null。     |
365| authType       | [UserAuthType](#userauthtype8)           | 是   | 认证类型,当前支持FACE。 |
366| authTrustLevel | [AuthTrustLevel](#authtrustlevel8)       | 是   | 认证信任等级。               |
367
368**返回值:**
369
370| 类型                                      | 说明         |
371| ----------------------------------------- | ------------ |
372| [AuthInstance](#authinstance9) | 认证器对象。 |
373
374以下错误码的详细介绍请参见[用户认证错误码](../errorcodes/errorcode-useriam.md)
375
376**错误码:**
377
378| 错误码ID | 错误信息 |
379| -------- | ------- |
380| 401 | Incorrect parameters. |
381| 12500002 | General operation error. |
382| 12500005 | The authentication type is not supported. |
383| 12500006 | The authentication trust level is not supported. |
384
385**示例:**
386
387```js
388import userIAM_userAuth from '@ohos.userIAM.userAuth';
389
390let challenge = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]);
391let authType = userIAM_userAuth.UserAuthType.FACE;
392let authTrustLevel = userIAM_userAuth.AuthTrustLevel.ATL1;
393
394try {
395    let auth = userIAM_userAuth.getAuthInstance(challenge, authType, authTrustLevel);
396    console.info("get auth instance success");
397} catch (error) {
398    console.info("get auth instance success failed, error = " + error);
399}
400```
401
402## userIAM_userAuth.getAvailableStatus<sup>9+</sup>
403
404getAvailableStatus(authType : UserAuthType, authTrustLevel : AuthTrustLevel): void
405
406查询指定类型和等级的认证能力是否支持。
407
408**需要权限**:ohos.permission.ACCESS_BIOMETRIC
409
410**系统能力**:SystemCapability.UserIAM.UserAuth.Core
411
412**参数:**
413
414| 参数名         | 类型                               | 必填 | 说明                       |
415| -------------- | ---------------------------------- | ---- | -------------------------- |
416| authType       | [UserAuthType](#userauthtype8)     | 是   | 认证类型,当前只支持FACE。 |
417| authTrustLevel | [AuthTrustLevel](#authtrustlevel8) | 是   | 认证信任等级。       |
418
419以下错误码的详细介绍请参见[用户认证错误码](../errorcodes/errorcode-useriam.md)
420
421**错误码:**
422
423| 错误码ID | 错误信息 |
424| -------- | ------- |
425| 201 | Permission verification failed. |
426| 401 | Incorrect parameters. |
427| 12500002 | General operation error. |
428| 12500005 | The authentication type is not supported. |
429| 12500006 | The authentication trust level is not supported. |
430| 12500010 | The type of credential has not been enrolled. |
431
432**示例:**
433
434```js
435import userIAM_userAuth from '@ohos.userIAM.userAuth';
436
437try {
438    userIAM_userAuth.getAvailableStatus(userIAM_userAuth.UserAuthType.FACE, userIAM_userAuth.AuthTrustLevel.ATL1);
439    console.info("current auth trust level is supported");
440} catch (error) {
441    console.info("current auth trust level is not supported, error = " + error);
442}
443```
444
445## UserAuthResultCode<sup>9+</sup>
446
447表示返回码的枚举。
448
449**系统能力**:SystemCapability.UserIAM.UserAuth.Core
450
451| 名称                    |   值   | 说明                 |
452| ----------------------- | ------ | -------------------- |
453| SUCCESS                 | 12500000      | 执行成功。           |
454| FAIL                    | 12500001      | 认证失败。           |
455| GENERAL_ERROR           | 12500002      | 操作通用错误。       |
456| CANCELED                | 12500003      | 操作取消。           |
457| TIMEOUT                 | 12500004      | 操作超时。           |
458| TYPE_NOT_SUPPORT        | 12500005      | 不支持的认证类型。   |
459| TRUST_LEVEL_NOT_SUPPORT | 12500006      | 不支持的认证等级。   |
460| BUSY                    | 12500007      | 忙碌状态。           |
461| LOCKED                  | 12500009      | 认证器已锁定。       |
462| NOT_ENROLLED            | 12500010      | 用户未录入认证信息。 |
463
464## UserAuth<sup>8+</sup>
465
466认证器对象。
467
468### constructor<sup>(deprecated)</sup>
469
470constructor()
471
472创建认证器对象。
473
474> **说明:**
475> 从 API version 8 开始支持,从 API version 9 开始废弃,请使用[getAuthInstance](#useriam_userauthgetauthinstance9)替代。
476
477**系统能力**:SystemCapability.UserIAM.UserAuth.Core
478
479**返回值:**
480
481| 类型                   | 说明                 |
482| ---------------------- | -------------------- |
483| [UserAuth](#userauth8) | 认证器对象。 |
484
485**示例:**
486
487```js
488import userIAM_userAuth from '@ohos.userIAM.userAuth';
489
490let auth = new userIAM_userAuth.UserAuth();
491```
492
493### getVersion<sup>(deprecated)</sup>
494
495getVersion() : number
496
497获取认证器的版本信息。
498
499> **说明:**
500> 从 API version 8 开始支持,从 API version 9 开始废弃。
501
502**需要权限**:ohos.permission.ACCESS_BIOMETRIC
503
504**系统能力**:SystemCapability.UserIAM.UserAuth.Core
505
506**返回值:**
507
508| 类型   | 说明                   |
509| ------ | ---------------------- |
510| number | 认证器版本信息。 |
511
512**示例:**
513
514```js
515import userIAM_userAuth from '@ohos.userIAM.userAuth';
516
517let auth = new userIAM_userAuth.UserAuth();
518let version = auth.getVersion();
519console.info("auth version = " + version);
520```
521
522### getAvailableStatus<sup>(deprecated)</sup>
523
524getAvailableStatus(authType : UserAuthType, authTrustLevel : AuthTrustLevel) : number
525
526查询指定类型和等级的认证能力是否支持。
527
528> **说明:**
529> 从 API version 8 开始支持,从 API version 9 开始废弃,请使用[getAvailableStatus](#useriam_userauthgetavailablestatus9)替代。
530
531**需要权限**:ohos.permission.ACCESS_BIOMETRIC
532
533**系统能力**:SystemCapability.UserIAM.UserAuth.Core
534
535**参数:**
536
537| 参数名         | 类型                               | 必填 | 说明                       |
538| -------------- | ---------------------------------- | ---- | -------------------------- |
539| authType       | [UserAuthType](#userauthtype8)     | 是   | 认证类型,当前只支持FACE。 |
540| authTrustLevel | [AuthTrustLevel](#authtrustlevel8) | 是   | 认证信任等级。       |
541
542**返回值:**
543
544| 类型   | 说明                                                         |
545| ------ | ------------------------------------------------------------ |
546| number | 查询结果,结果为SUCCESS时表示支持,其他返回值参见[ResultCode](#resultcodedeprecated)。 |
547
548**示例:**
549
550```js
551import userIAM_userAuth from '@ohos.userIAM.userAuth';
552
553let auth = new userIAM_userAuth.UserAuth();
554let checkCode = auth.getAvailableStatus(userIAM_userAuth.UserAuthType.FACE, userIAM_userAuth.AuthTrustLevel.ATL1);
555if (checkCode == userIAM_userAuth.ResultCode.SUCCESS) {
556    console.info("check auth support success");
557} else {
558    console.error("check auth support fail, code = " + checkCode);
559}
560```
561
562### auth<sup>(deprecated)</sup>
563
564auth(challenge: Uint8Array, authType: UserAuthType, authTrustLevel: AuthTrustLevel, callback: IUserAuthCallback): Uint8Array
565
566执行用户认证,使用回调函数返回结果。
567
568> **说明:**
569> 从 API version 8 开始支持,从 API version 9 开始废弃,建议使用[start](#start9)代替。
570
571**需要权限**:ohos.permission.ACCESS_BIOMETRIC
572
573**系统能力**:SystemCapability.UserIAM.UserAuth.Core
574
575**参数:**
576
577| 参数名         | 类型                                     | 必填 | 说明                     |
578| -------------- | ---------------------------------------- | ---- | ------------------------ |
579| challenge      | Uint8Array                               | 是   | 挑战值,可以填null。     |
580| authType       | [UserAuthType](#userauthtype8)           | 是   | 认证类型,当前支持FACE。 |
581| authTrustLevel | [AuthTrustLevel](#authtrustlevel8)       | 是   | 认证信任等级。             |
582| callback       | [IUserAuthCallback](#iuserauthcallbackdeprecated) | 是   | 回调函数。        |
583
584**返回值:**
585
586| 类型       | 说明                                                         |
587| ---------- | ------------------------------------------------------------ |
588| Uint8Array | ContextId,作为取消认证[cancelAuth](#cancelauthdeprecated)接口的入参。 |
589
590**示例:**
591
592```js
593import userIAM_userAuth from '@ohos.userIAM.userAuth';
594
595let auth = new userIAM_userAuth.UserAuth();
596auth.auth(null, userIAM_userAuth.UserAuthType.FACE, userIAM_userAuth.AuthTrustLevel.ATL1, {
597    onResult: (result, extraInfo) => {
598        try {
599            console.info("auth onResult result = " + result);
600            console.info("auth onResult extraInfo = " + JSON.stringify(extraInfo));
601            if (result == userIAM_userAuth.ResultCode.SUCCESS) {
602                // 此处添加认证成功逻辑
603            } else {
604                // 此处添加认证失败逻辑
605            }
606        } catch (e) {
607            console.info("auth onResult error = " + e);
608        }
609    }
610});
611```
612
613### cancelAuth<sup>(deprecated)</sup>
614
615cancelAuth(contextID : Uint8Array) : number
616
617表示通过contextID取消本次认证操作。
618
619> **说明:**
620> 从 API version 8 开始支持,从 API version 9 开始废弃,建议使用[cancel](#cancel9)代替。
621
622**需要权限**:ohos.permission.ACCESS_BIOMETRIC
623
624**系统能力**:SystemCapability.UserIAM.UserAuth.Core
625
626**参数:**
627
628| 参数名    | 类型       | 必填 | 说明                                       |
629| --------- | ---------- | ---- | ------------------------------------------ |
630| contextID | Uint8Array | 是   | 上下文的标识,通过[auth](#authdeprecated)接口获取。 |
631
632**返回值:**
633
634| 类型   | 说明                     |
635| ------ | ------------------------ |
636| number | 取消认证的结果,结果为SUCCESS时表示取消成功,其他返回值参见[ResultCode](#resultcodedeprecated)。 |
637
638**示例:**
639
640```js
641import userIAM_userAuth from '@ohos.userIAM.userAuth';
642
643// contextId可通过auth接口获取,此处直接定义
644let contextId = new Uint8Array([0, 1, 2, 3, 4, 5, 6, 7]);
645let auth = new userIAM_userAuth.UserAuth();
646let cancelCode = auth.cancelAuth(contextId);
647if (cancelCode == userIAM_userAuth.ResultCode.SUCCESS) {
648    console.info("cancel auth success");
649} else {
650    console.error("cancel auth fail");
651}
652```
653
654## IUserAuthCallback<sup>(deprecated)</sup>
655
656返回认证结果的回调对象。
657
658> **说明:**
659> 从 API version 8 开始支持,从 API version 9 开始废弃,建议使用[AuthEvent](#authevent9)代替。
660
661### onResult<sup>(deprecated)</sup>
662
663onResult: (result : number, extraInfo : AuthResult) => void
664
665回调函数,返回认证结果。
666
667> **说明:**
668> 从 API version 8 开始支持,从 API version 9 开始废弃,建议使用[callback](#callback9)代替。
669
670**系统能力**:SystemCapability.UserIAM.UserAuth.Core
671
672**参数:**
673
674| 参数名    | 类型                       | 必填 | 说明        |
675| --------- | -------------------------- | ---- | ------------------------------------------------ |
676| result    | number           | 是   | 认证结果,参见[ResultCode](#resultcodedeprecated)。 |
677| extraInfo | [AuthResult](#authresultdeprecated) | 是   | 扩展信息,不同情况下的具体信息,<br/>如果身份验证通过,则在extraInfo中返回用户认证令牌,<br/>如果身份验证失败,则在extraInfo中返回剩余的用户认证次数,<br/>如果身份验证执行器被锁定,则在extraInfo中返回冻结时间。 |
678
679**示例:**
680
681```js
682import userIAM_userAuth from '@ohos.userIAM.userAuth';
683
684let auth = new userIAM_userAuth.UserAuth();
685auth.auth(null, userIAM_userAuth.UserAuthType.FACE, userIAM_userAuth.AuthTrustLevel.ATL1, {
686    onResult: (result, extraInfo) => {
687        try {
688            console.info("auth onResult result = " + result);
689            console.info("auth onResult extraInfo = " + JSON.stringify(extraInfo));
690            if (result == userIAM_userAuth.ResultCode.SUCCESS) {
691                // 此处添加认证成功逻辑
692            }  else {
693                // 此处添加认证失败逻辑
694            }
695        } catch (e) {
696            console.info("auth onResult error = " + e);
697        }
698    }
699});
700```
701
702### onAcquireInfo<sup>(deprecated)</sup>
703
704onAcquireInfo ?: (module : number, acquire : number, extraInfo : any) => void
705
706回调函数,返回认证过程中的提示信息,非必须实现。
707
708> **说明:**
709> 从 API version 8 开始支持,从 API version 9 开始废弃,建议使用[callback](#callback9)代替。
710
711**系统能力**:SystemCapability.UserIAM.UserAuth.Core
712
713**参数:**
714
715| 参数名    | 类型   | 必填 | 说明                           |
716| --------- | ------ | ---- | ------------------------------ |
717| module    | number | 是   | 发送提示信息的模块标识。             |
718| acquire   | number | 是   | 认证执过程中的提示信息。 |
719| extraInfo | any    | 是   | 预留字段。                     |
720
721**示例:**
722
723```js
724import userIAM_userAuth from '@ohos.userIAM.userAuth';
725
726let auth = new userIAM_userAuth.UserAuth();
727auth.auth(null, userIAM_userAuth.UserAuthType.FACE, userIAM_userAuth.AuthTrustLevel.ATL1, {
728    onAcquireInfo: (module, acquire, extraInfo) => {
729        try {
730            console.info("auth onAcquireInfo module = " + module);
731            console.info("auth onAcquireInfo acquire = " + acquire);
732            console.info("auth onAcquireInfo extraInfo = " + JSON.stringify(extraInfo));
733        } catch (e) {
734            console.info("auth onAcquireInfo error = " + e);
735        }
736    }
737});
738```
739
740## AuthResult<sup>(deprecated)</sup>
741
742表示认证结果的对象。
743
744> **说明:**
745> 从 API version 8 开始支持,从 API version 9 开始废弃,建议使用[AuthResultInfo](#authresultinfo9)代替。
746
747**系统能力**:SystemCapability.UserIAM.UserAuth.Core
748
749| 名称         | 类型   | 必填 | 说明                 |
750| ------------ | ---------- | ---- | -------------------|
751| token        | Uint8Array | 否   | 认证通过的令牌信息。 |
752| remainTimes  | number     | 否   | 剩余的认证操作次数。 |
753| freezingTime | number     | 否   | 认证操作的冻结时间。 |
754
755## ResultCode<sup>(deprecated)</sup>
756
757表示返回码的枚举。
758
759> **说明:**
760> 从 API version 9 开始废弃,建议使用[UserAuthResultCode](#userauthresultcode9)代替。
761
762**系统能力**:SystemCapability.UserIAM.UserAuth.Core
763
764| 名称                    | 值 | 说明                 |
765| ----------------------- | ------ | -------------------- |
766| SUCCESS                 | 0      | 执行成功。           |
767| FAIL                    | 1      | 认证失败。           |
768| GENERAL_ERROR           | 2      | 操作通用错误。       |
769| CANCELED                | 3      | 操作取消。           |
770| TIMEOUT                 | 4      | 操作超时。           |
771| TYPE_NOT_SUPPORT        | 5      | 不支持的认证类型。   |
772| TRUST_LEVEL_NOT_SUPPORT | 6      | 不支持的认证等级。   |
773| BUSY                    | 7      | 忙碌状态。           |
774| INVALID_PARAMETERS      | 8      | 无效参数。           |
775| LOCKED                  | 9      | 认证器已锁定。       |
776| NOT_ENROLLED            | 10     | 用户未录入认证信息。 |
777
778## FaceTips<sup>8+</sup>
779
780表示人脸认证过程中提示码的枚举。
781
782**系统能力**:SystemCapability.UserIAM.UserAuth.Core
783
784| 名称                          |   值   |    说明                             |
785| ----------------------------- | ------ | ------------------------------------ |
786| FACE_AUTH_TIP_TOO_BRIGHT      | 1      | 光线太强,获取的图像太亮。           |
787| FACE_AUTH_TIP_TOO_DARK        | 2      | 光线太暗,获取的图像太暗。           |
788| FACE_AUTH_TIP_TOO_CLOSE       | 3      | 人脸距离设备过近。                   |
789| FACE_AUTH_TIP_TOO_FAR         | 4      | 人脸距离设备过远。                   |
790| FACE_AUTH_TIP_TOO_HIGH        | 5      | 设备太高,仅获取到人脸上部。         |
791| FACE_AUTH_TIP_TOO_LOW         | 6      | 设备太低,仅获取到人脸下部。         |
792| FACE_AUTH_TIP_TOO_RIGHT       | 7      | 设备太靠右,仅获取到人脸右部。       |
793| FACE_AUTH_TIP_TOO_LEFT        | 8      | 设备太靠左,仅获取到人脸左部。       |
794| FACE_AUTH_TIP_TOO_MUCH_MOTION | 9      | 在图像采集过程中,用户人脸移动太快。 |
795| FACE_AUTH_TIP_POOR_GAZE       | 10     | 没有正视摄像头。                     |
796| FACE_AUTH_TIP_NOT_DETECTED    | 11     | 没有检测到人脸信息。                 |
797
798
799## FingerprintTips<sup>8+</sup>
800
801表示指纹认证过程中提示码的枚举。
802
803**系统能力**:SystemCapability.UserIAM.UserAuth.Core
804
805| 名称                              |   值   | 说明                                               |
806| --------------------------------- | ------ | -------------------------------------------------- |
807| FINGERPRINT_AUTH_TIP_GOOD         | 0      | 获取的指纹图像良好。                               |
808| FINGERPRINT_AUTH_TIP_DIRTY        | 1      | 由于传感器上可疑或检测到的污垢,指纹图像噪音过大。 |
809| FINGERPRINT_AUTH_TIP_INSUFFICIENT | 2      | 由于检测到的情况,指纹图像噪声太大,无法处理。     |
810| FINGERPRINT_AUTH_TIP_PARTIAL      | 3      | 仅检测到部分指纹图像。                             |
811| FINGERPRINT_AUTH_TIP_TOO_FAST     | 4      | 快速移动,指纹图像不完整。                         |
812| FINGERPRINT_AUTH_TIP_TOO_SLOW     | 5      | 缺少运动,指纹图像无法读取。                       |
813
814
815## UserAuthType<sup>8+</sup>
816
817表示身份认证的凭据类型枚举。
818
819**系统能力**:SystemCapability.UserIAM.UserAuth.Core
820
821| 名称        |   值   | 说明       |
822| ----------- | ------ | ---------- |
823| FACE        | 2      | 人脸认证。 |
824| FINGERPRINT | 4      | 指纹认证。 |
825
826## AuthTrustLevel<sup>8+</sup>
827
828表示认证结果的信任等级枚举。
829
830**系统能力**:SystemCapability.UserIAM.UserAuth.Core
831
832| 名称 |   值   | 说明                      |
833| ---- | ------ | ------------------------- |
834| ATL1 | 10000  | 认证结果的信任等级级别1。 |
835| ATL2 | 20000  | 认证结果的信任等级级别2。 |
836| ATL3 | 30000  | 认证结果的信任等级级别3。 |
837| ATL4 | 40000  | 认证结果的信任等级级别4。 |
838
839## userIAM_userAuth.getAuthenticator<sup>(deprecated)</sup>
840
841getAuthenticator(): Authenticator
842
843获取Authenticator对象,用于执行用户身份认证。
844
845> **说明:**
846> 从 API version 8 开始废弃,建议使用[constructor](#constructordeprecated)替代。
847
848**系统能力**:SystemCapability.UserIAM.UserAuth.Core
849
850**返回值:**
851
852| 类型                                      | 说明         |
853| ----------------------------------------- | ------------ |
854| [Authenticator](#authenticatordeprecated) | 认证器对象。 |
855
856**示例:**
857  ```js
858  let authenticator = userIAM_userAuth.getAuthenticator();
859  ```
860
861## Authenticator<sup>(deprecated)</sup>
862
863认证器对象。
864
865> **说明:**
866> 从 API version 8 开始废弃,建议使用[UserAuth](#userauth8)替代。
867
868### execute<sup>(deprecated)</sup>
869
870execute(type: AuthType, level: SecureLevel, callback: AsyncCallback&lt;number&gt;): void
871
872执行用户认证,使用callback方式作为异步方法。
873
874> **说明:**
875> 从 API version 8 开始废弃,建议使用[auth](#authdeprecated)替代。
876
877**需要权限**:ohos.permission.ACCESS_BIOMETRIC
878
879**系统能力**:SystemCapability.UserIAM.UserAuth.Core
880
881**参数:**
882
883| 参数名   | 类型                        | 必填 | 说明                      |
884| -------- | --------------------------- | ---- | -------------------------- |
885| type     | AuthType                      | 是   | 认证类型,当前只支持"FACE_ONLY"。<br/>ALL为预留参数,当前版本暂不支持ALL类型的认证。 |
886| level    | SecureLevel  | 是   | 安全级别,对应认证的安全级别,有效值为"S1"(最低)、"S2"、"S3"、"S4"(最高)。<br/>具备3D人脸识别能力的设备支持"S3"及以下安全级别的认证。<br/>具备2D人脸识别能力的设备支持"S2"及以下安全级别的认证。 |
887| callback | AsyncCallback&lt;number&gt; | 是   | 回调函数。    |
888
889callback返回值:
890
891| 类型   | 说明                                                         |
892| ------ | ------------------------------------------------------------ |
893| number | 表示认证结果,参见[AuthenticationResult](#authenticationresultdeprecated)。 |
894
895**示例:**
896
897```js
898let authenticator = userIAM_userAuth.getAuthenticator();
899authenticator.execute("FACE_ONLY", "S2", (error, code)=>{
900    if (code === userIAM_userAuth.ResultCode.SUCCESS) {
901        console.info("auth success");
902        return;
903    }
904    console.error("auth fail, code = " + code);
905});
906```
907
908
909### execute<sup>(deprecated)</sup>
910
911execute(type : AuthType, level : SecureLevel): Promise&lt;number&gt;
912
913执行用户认证,使用promise方式作为异步方法。
914
915> **说明:**
916> 从 API version 8 开始废弃,建议使用[auth](#authdeprecated)替代。
917
918**需要权限**:ohos.permission.ACCESS_BIOMETRIC
919
920**系统能力**:SystemCapability.UserIAM.UserAuth.Core
921
922**参数:**
923
924| 参数名 | 类型   | 必填 | 说明                                                         |
925| ------ | ------ | ---- | ------------------------------------------------------------ |
926| type   | AuthType | 是   | 认证类型,当前只支持"FACE_ONLY"。<br/>ALL为预留参数,当前版本暂不支持ALL类型的认证。 |
927| level  | SecureLevel | 是   | 安全级别,对应认证的安全级别,有效值为"S1"(最低)、"S2"、"S3"、"S4"(最高)。<br/>具备3D人脸识别能力的设备支持"S3"及以下安全级别的认证。<br/>具备2D人脸识别能力的设备支持"S2"及以下安全级别的认证。 |
928
929**返回值:**
930
931| 类型                  | 说明                                                         |
932| --------------------- | ------------------------------------------------------------ |
933| Promise&lt;number&gt; | 返回携带一个number的Promise。number&nbsp;为认证结果,参见[AuthenticationResult](#authenticationresultdeprecated)。 |
934
935**示例:**
936
937```js
938let authenticator = userIAM_userAuth.getAuthenticator();
939authenticator.execute("FACE_ONLY", "S2").then((code)=>{
940    console.info("auth success");
941}).catch((error)=>{
942    console.error("auth fail, code = " + error);
943});
944```
945
946## AuthenticationResult<sup>(deprecated)</sup>
947
948表示认证结果的枚举。
949
950> **说明:**
951> 从 API version 8 开始废弃,建议使用[ResultCode](#resultcodedeprecated)替代。
952
953**系统能力**:SystemCapability.UserIAM.UserAuth.Core
954
955| 名称               |   值   | 说明                       |
956| ------------------ | ------ | -------------------------- |
957| NO_SUPPORT         | -1     | 设备不支持当前的认证方式。 |
958| SUCCESS            | 0      | 认证成功。                 |
959| COMPARE_FAILURE    | 1      | 比对失败。                 |
960| CANCELED           | 2      | 用户取消认证。             |
961| TIMEOUT            | 3      | 认证超时。                 |
962| CAMERA_FAIL        | 4      | 开启相机失败。             |
963| BUSY               | 5      | 认证服务忙,请稍后重试。   |
964| INVALID_PARAMETERS | 6      | 认证参数无效。             |
965| LOCKED             | 7      | 认证失败次数过多,已锁定。 |
966| NOT_ENROLLED       | 8      | 未录入认证凭据。           |
967| GENERAL_ERROR      | 100    | 其他错误。                 |
968