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