1# 认证域账号(仅对系统应用开放)
2
3当需要验证域账号身份(比如屏幕解锁、登录会话失效等场景)时,可以使用系统提供的接口对域账号进行身份认证。
4
5## 开发准备
6
7导入系统账号模块。
8
9```ts
10import { osAccount } from '@kit.BasicServicesKit';
11```
12
13## 使用密码认证域账号
14
15用户可以使用密码认证域账号。开发者可以使用[auth](../../reference/apis-basic-services-kit/js-apis-osAccount-sys.md#auth10)接口完成此操作。此外使用该接口,应用还需要申请ohos.permission.ACCESS_USER_AUTH_INTERNAL权限。
16
17具体开发实例如下:
18
191. 申请权限:ohos.permission.ACCESS_USER_AUTH_INTERNAL。申请流程请参考:[申请应用权限](../../security/AccessToken/determine-application-mode.md#system_basic等级应用申请权限的方式)。
20
212. 获取用户输入,包括域账号信息和域账号密码。
22
23   ```ts
24     let domainAccountInfo: osAccount.DomainAccountInfo = {
25       domain: 'CHINA',
26       accountName: 'zhangsan'
27     }
28     let credential: Uint8Array = new Uint8Array([0]);
29   ```
30
313. 定义认证结果回调。
32
33   ```ts
34   let callback: osAccount.IUserAuthCallback = {
35     onResult: (resultCode: number, authResult: osAccount.AuthResult) => {
36       console.log('auth resultCode = ' + resultCode);
37       console.log('auth authResult = ' + JSON.stringify(authResult));
38     }
39   }
40   ```
41
424. 调用[auth](../../reference/apis-basic-services-kit/js-apis-osAccount-sys.md#auth10)接口进行密码认证。
43
44   ```ts
45   try {
46     osAccount.DomainAccountManager.auth(domainAccountInfo, credential, callback);
47   } catch (err) {
48     console.log('auth exception = ' + JSON.stringify(err));
49   }
50   ```
51
52## 弹窗认证域账号
53
54在无法获取用户密码的情况下,需要认证域账号时,可以请求系统弹窗验证域账号用户。开发者可以使用[authWithPopup](../../reference/apis-basic-services-kit/js-apis-osAccount-sys.md#authwithpopup10)完成此操作。
55
56具体开发实例如下:
57
581. 定义认证结果回调对象。
59
60   ```ts
61   let callback: osAccount.IUserAuthCallback = {
62     onResult: (resultCode: number, authResult: osAccount.AuthResult) => {
63       console.log('authWithPopup resultCode = ' + resultCode);
64       console.log('authWithPopup authResult = ' + JSON.stringify(authResult));
65     }
66   }
67   ```
68
692. 调用[authWithPopup](../../reference/apis-basic-services-kit/js-apis-osAccount-sys.md#authwithpopup10)接口弹窗认证当前域账号。
70
71   ```ts
72   try {
73     osAccount.DomainAccountManager.authWithPopup(callback)
74   } catch (err) {
75     console.log('authWithPopup exception = ' + JSON.stringify(err));
76   }
77   ```
78