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 141. 申请权限,申请流程请参考:[申请应用权限](../../security/AccessToken/determine-application-mode.md#system_basic等级应用申请权限的方式)。 15 - ohos.permission.MANAGE_LOCAL_ACCOUNTS 16 - ohos.permission.GET_DOMAIN_ACCOUNTS 17 182. 导入系统账号模块。 19 20 ```ts 21 import { osAccount, BusinessError } from '@kit.BasicServicesKit'; 22 ``` 23 243. 获取系统账号管理对象。 25 26 ```ts 27 let osAccountMgr = osAccount.getAccountManager(); 28 ``` 29 30## 判断指定域账号是否存在 31 32在添加域账号之前,应该先判断域账号是否存在。开发者可以使用[hasAccount](../../reference/apis-basic-services-kit/js-apis-osAccount-sys.md#hasaccount10)接口进行判断。 33 34具体开发实例如下: 35 361. 定义待判断的域账号信息。 37 38 ```ts 39 let domainAccountInfo: osAccount.DomainAccountInfo = { 40 accountName: 'testAccountName', 41 domain: 'testDomain' 42 } 43 ``` 44 452. 调用[hasAccount](../../reference/apis-basic-services-kit/js-apis-osAccount-sys.md#hasaccount10)接口。 46 47 ```ts 48 osAccount.DomainAccountManager.hasAccount(domainAccountInfo).then((isAccountExisted: boolean)=>{ 49 console.info('execute hasAccount successfully, isAccountExisted:' + JSON.stringify(isAccountExisted)); 50 }).catch((err: BusinessError)=>{ 51 console.error(`execute hasAccount code is ${err.code}, message is ${err.message}`); 52 }); 53 ``` 54 55## 添加域账号 56 57用户在设置中添加其他域账号,允许其他域账号用户使用同一设备。开发者可以使用[createOsAccountForDomain](../../reference/apis-basic-services-kit/js-apis-osAccount-sys.md#createosaccountfordomain8)完成此操作。 58 59具体开发实例如下: 60 611. 定义域账号信息,指定域名、账号名、账号标识(可选)。 62 63 ```ts 64 let domainInfo: osAccount.DomainAccountInfo = { 65 domain: 'testDomain', 66 accountName: 'testAccountName' 67 }; 68 ``` 69 702. 指定类型和域账号信息,调用[createOsAccountForDomain](../../reference/apis-basic-services-kit/js-apis-osAccount-sys.md#createosaccountfordomain8)接口在设备上创建一个域账号。 71 72 ```ts 73 try { 74 osAccountMgr.createOsAccountForDomain(osAccount.OsAccountType.NORMAL, domainInfo, 75 (err: BusinessError, osAccountInfo: osAccount.OsAccountInfo)=>{ 76 if (err) { 77 console.error(`createOsAccountForDomain exception:code is ${err.code}, message is ${err.message}`); 78 } else { 79 console.info('createOsAccountForDomain osAccountInfo:' + JSON.stringify(osAccountInfo)); 80 } 81 }); 82 } catch (e) { 83 console.error(`createOsAccountForDomain exception: code is ${e.code}, message is ${e.message}`); 84 } 85 ``` 86 87## 删除域账号 88 89用户可以删除不再使用的域账号。由于域账号和系统账号是一一绑定关系,开发者可以使用[removeOsAccount](../../reference/apis-basic-services-kit/js-apis-osAccount-sys.md#removeosaccount)接口删除与目标域账号绑定的系统账号,进而实现删除域账号。 90 91具体开发实例如下: 92 931. 调用[getOsAccountLocalIdForDomain](../../reference/apis-basic-services-kit/js-apis-osAccount.md#getosaccountlocalidfordomain9)方法,根据域账号信息获取系统账号ID。 94 95 ```ts 96 let domainInfo: osAccount.DomainAccountInfo = { 97 domain: 'testDomain', 98 accountName: 'testAccountName' 99 }; 100 let localId: number = 0; 101 102 try { 103 localId = await osAccountMgr.getOsAccountLocalIdForDomain(domainInfo); 104 } catch (err) { 105 console.error(`getOsAccountLocalIdForDomain exception: code is ${err.code}, message is ${err.message}`); 106 } 107 ``` 108 1092. 调用[removeOsAccount](../../reference/apis-basic-services-kit/js-apis-osAccount-sys.md#removeosaccount)方法删除域账号。 110 111 ```ts 112 try { 113 osAccountMgr.removeOsAccount(localId, (err: BusinessError)=>{ 114 if (err) { 115 console.error(`removeOsAccount failed, code is ${err.code}, message is ${err.message}`); 116 } else { 117 console.info('removeOsAccount successfully'); 118 } 119 }); 120 } catch (err) { 121 console.error(`removeOsAccount exception: code is ${err.code}, message is ${err.message}`); 122 } 123 ``` 124 125## 查询域账号信息 126 127用户通过身份认证后,可以查询自己或他人的域账号信息。开发者可以使用[getAccountInfo](../../reference/apis-basic-services-kit/js-apis-osAccount-sys.md#getaccountinfo10)接口完成此操作。 128 129具体开发实例如下: 130 1311. 定义查询选项,可以指定需要查询的域名和账号名。选项的类型为[GetDomainAccountInfoOptions](../../reference/apis-basic-services-kit/js-apis-osAccount-sys.md#getdomainaccountinfooptions10)。 132 133 ```ts 134 let options: osAccount.GetDomainAccountInfoOptions = { 135 domain: 'testDomain', 136 accountName: 'testAccountName' 137 } 138 ``` 139 1402. 调用[getAccountInfo](../../reference/apis-basic-services-kit/js-apis-osAccount-sys.md#getaccountinfo10)接口查询域账号信息。 141 142 ```ts 143 try { 144 osAccount.DomainAccountManager.getAccountInfo(options, 145 (err: BusinessError, result: osAccount.DomainAccountInfo) => { 146 if (err) { 147 console.error(`call getAccountInfo failed, code is ${err.code}, message is ${err.message}`); 148 } else { 149 console.info('getAccountInfo result: ' + result); 150 } 151 }); 152 } catch (err) { 153 console.error(`getAccountInfo exception = code is ${err.code}, message is ${err.message}`); 154 } 155 ``` 156