• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 用户认证开发指导
2
3> **说明:**
4> 该开发指导需匹配API Version 8或以上版本的SDK使用。
5
6## 场景介绍
7
8当前用户认证支持2D人脸识别、3D人脸识别,可应用于设备解锁、应用登录、支付等身份认证场景。
9
10## 接口说明
11
12userIAM_userAuth模块提供了用户认证的相关方法,包括检测认证能力、认证和取消认证等,用户可以使用人脸等生物特征信息进行认证操作。具体接口说明可以查阅[API参考](../reference/apis/js-apis-useriam-userauth.md)。
13
14在执行认证前,需要检查设备是否支持该认证能力,具体指认证类型、认证等级。如果不支持,需要考虑使用其他认证能力。
15
16**表1** 用户认证开放能力列表
17
18| 接口名                                                       | 功能描述                                                     |
19| ------------------------------------------------------------ | ------------------------------------------------------------ |
20| getVersion() : number                                        | 获取认证对象的版本信息。                                     |
21| getAvailableStatus(authType : UserAuthType, authTrustLevel : AuthTrustLevel) : number | 根据指定的认证类型、认证等级,检测当前设备是否支持相应的认证能力。 |
22| auth(challenge: Uint8Array, authType: UserAuthType, authTrustLevel: AuthTrustLevel, callback: IUserAuthCallback): Uint8Array | 执行用户认证,使用callback方式作为异步方法。                 |
23| cancelAuth(contextID : Uint8Array) : number                  | 通过contextID取消本次认证操作。                              |
24
25## 开发步骤
26
27开发前请完成以下准备工作:
28
291. 在应用配置权限文件中,增加ohos.permission.ACCESS_BIOMETRIC的权限声明。
302. 在使用用户认证能力的代码文件中增加import userIAM_userAuth from '@ohos.userIAM.userAuth'。
31
32开发过程:
33
341. 获取Authenticator的单例对象,代码示例如下:
35
36   ```js
37   let auth = new userIAM_userAuth.UserAuth();
38   ```
39
402. (可选)获取认证对象的版本信息,代码示例如下:
41
42   ```js
43   let auth = new userIAM_userAuth.UserAuth();
44   let version = auth.getVersion();
45   console.info("auth version = " + version);
46   ```
47
483. 根据指定的认证类型、认证等级,检测当前设备是否支持相应的认证能力,代码示例如下:
49
50   ```js
51   let auth = new userIAM_userAuth.UserAuth();
52   let checkCode = auth.getAvailableStatus(userIAM_userAuth.UserAuthType.FACE, userIAM_userAuth.AuthTrustLevel.ATL1);
53   if (checkCode == userIAM_userAuth.ResultCode.SUCCESS) {
54       console.info("check auth support success");
55       // 此处添加支持指定类型认证的逻辑
56   } else {
57       console.error("check auth support fail, code = " + checkCode);
58       // 此处添加不支持指定类型认证的逻辑
59   }
60   ```
61
624. 执行认证操作,代码示例如下:
63
64   ```js
65   let auth = new userIAM_userAuth.UserAuth();
66   auth.auth(null, userIAM_userAuth.UserAuthType.FACE, userIAM_userAuth.AuthTrustLevel.ATL1, {
67       onResult: (result, extraInfo) => {
68           try {
69               console.info("auth onResult result = " + result);
70               console.info("auth onResult extraInfo = " + JSON.stringify(extraInfo));
71               if (result == 'SUCCESS') {
72                   // 此处添加认证成功逻辑
73               }  else {
74                   // 此处添加认证失败逻辑
75               }
76           } catch (e) {
77               console.info("auth onResult error = " + e);
78           }
79       },
80
81       onAcquireInfo: (module, acquire, extraInfo) => {
82           try {
83               console.info("auth onAcquireInfo module = " + module);
84               console.info("auth onAcquireInfo acquire = " + acquire);
85               console.info("auth onAcquireInfo extraInfo = " + JSON.stringify(extraInfo));
86           } catch (e) {
87               console.info("auth onAcquireInfo error = " + e);
88           }
89       }
90   });
91   ```
92
935. 认证过程中取消认证,代码示例如下:
94
95   ```js
96   let auth = new userIAM_userAuth.UserAuth();
97   // contextId通过auth接口获取
98   let contextId = auth.auth(null, userIAM_userAuth.UserAuthType.FACE, userIAM_userAuth.AuthTrustLevel.ATL1, {
99       onResult: (result, extraInfo) => {
100           console.info("auth onResult result = " + result);
101       },
102
103       onAcquireInfo: (module, acquire, extraInfo) => {
104           console.info("auth onAcquireInfo module = " + module);
105       }
106   });
107   let cancelCode = auth.cancel(contextId);
108   if (cancelCode == userIAM_userAuth.ResultCode.SUCCESS) {
109       console.info("cancel auth success");
110   } else {
111       console.error("cancel auth fail");
112   }
113   ```
114