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