1# @ohos.account.distributedAccount (Distributed Account Management) 2 3The **distributedAccount** module provides APIs for managing distributed accounts, including querying and updating account login states. 4 5> **NOTE** 6> 7> The initial APIs of this module are supported since API version 7. Newly added APIs will be marked with a superscript to indicate their earliest API version. 8 9## Modules to Import 10 11```ts 12import { distributedAccount } from '@kit.BasicServicesKit'; 13``` 14 15## distributedAccount.getDistributedAccountAbility 16 17getDistributedAccountAbility(): DistributedAccountAbility 18 19Obtains a **DistributedAccountAbility** instance. 20 21**System capability**: SystemCapability.Account.OsAccount 22 23**Return value** 24 25 | Type | Description | 26 | -------- | -------- | 27| [DistributedAccountAbility](#distributedaccountability) | **DistributedAccountAbility** instance obtained. This instance provides APIs for querying and updating the login state of a distributed account.| 28 29**Example** 30 ```ts 31 const accountAbility: distributedAccount.DistributedAccountAbility = distributedAccount.getDistributedAccountAbility(); 32 ``` 33 34## DistributedAccountAbility 35 36Provides APIs for querying and updating the login state of a distributed account. You must obtain a **DistributedAccountAbility** instance first. 37 38### getOsAccountDistributedInfo<sup>9+</sup> 39 40getOsAccountDistributedInfo(callback: AsyncCallback<DistributedInfo>): void 41 42Obtains distributed account information. This API uses an asynchronous callback to return the result. 43 44**System capability**: SystemCapability.Account.OsAccount 45 46**Required permissions**: ohos.permission.MANAGE_DISTRIBUTED_ACCOUNTS (available only for system applications), ohos.permission.GET_DISTRIBUTED_ACCOUNTS (available only for system applications), or ohos.permission.DISTRIBUTED_DATASYNC 47 48**Parameters** 49 50 | Name | Type | Mandatory | Description | 51 | -------- | -------- | -------- | -------- | 52 | callback | AsyncCallback<[DistributedInfo](#distributedinfo)> | Yes | Callback used to return the result. If the operation is successful, **err** is **undefined** and **data** is the distributed account information obtained. Otherwise, **err** is an error object. | 53 54**Error codes** 55 56| ID | Error Message| 57| -------- | ------------------- | 58| 201 | Permission denied.| 59| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. | 60| 12300001 | System service exception. | 61 62**Example** 63 ```ts 64 import { BusinessError } from '@kit.BasicServicesKit'; 65 66 const accountAbility: distributedAccount.DistributedAccountAbility = distributedAccount.getDistributedAccountAbility(); 67 try { 68 accountAbility.getOsAccountDistributedInfo( 69 (err: BusinessError, data: distributedAccount.DistributedInfo) => { 70 if (err) { 71 console.log('getOsAccountDistributedInfo exception: ' + JSON.stringify(err)); 72 } else { 73 console.log('distributed information: ' + JSON.stringify(data)); 74 } 75 }); 76 } catch (err) { 77 console.log('getOsAccountDistributedInfo exception: ' + JSON.stringify(err)); 78 } 79 ``` 80 81### getOsAccountDistributedInfo<sup>9+</sup> 82 83getOsAccountDistributedInfo(): Promise<DistributedInfo> 84 85Obtains distributed account information. This API uses a promise to return the result. 86 87**System capability**: SystemCapability.Account.OsAccount 88 89**Required permissions**: ohos.permission.MANAGE_DISTRIBUTED_ACCOUNTS (available only for system applications), ohos.permission.GET_DISTRIBUTED_ACCOUNTS (available only for system applications), or ohos.permission.DISTRIBUTED_DATASYNC 90 91**Return value** 92 93 | Type | Description | 94 | -------- | -------- | 95 | Promise<[DistributedInfo](#distributedinfo)> | Promise used to return the distributed account information obtained. | 96 97**Error codes** 98 99| ID | Error Message| 100| -------- | ------------------- | 101| 201 | Permission denied.| 102| 12300001 | System service exception. | 103 104**Example** 105 ```ts 106 import { BusinessError } from '@kit.BasicServicesKit'; 107 108 const accountAbility: distributedAccount.DistributedAccountAbility = distributedAccount.getDistributedAccountAbility(); 109 try { 110 accountAbility.getOsAccountDistributedInfo().then((data: distributedAccount.DistributedInfo) => { 111 console.log('distributed information: ' + JSON.stringify(data)); 112 }).catch((err: BusinessError) => { 113 console.log('getOsAccountDistributedInfo exception: ' + JSON.stringify(err)); 114 }); 115 } catch (err) { 116 console.log('getOsAccountDistributedInfo exception: ' + JSON.stringify(err)); 117 } 118 ``` 119 120### queryOsAccountDistributedInfo<sup>(deprecated)</sup> 121 122queryOsAccountDistributedInfo(callback: AsyncCallback<DistributedInfo>): void 123 124Queries distributed account information. This API uses an asynchronous callback to return the result. 125> **NOTE** 126> 127> This API is supported since API version 7 and deprecated since API version 9. Use [getOsAccountDistributedInfo](#getosaccountdistributedinfo9) instead. 128 129**System capability**: SystemCapability.Account.OsAccount 130 131**Required permissions**: ohos.permission.MANAGE_LOCAL_ACCOUNTS (available only for system applications) or ohos.permission.DISTRIBUTED_DATASYNC 132 133**Parameters** 134 135 | Name | Type | Mandatory | Description | 136 | -------- | -------- | -------- | -------- | 137 | callback | AsyncCallback<[DistributedInfo](#distributedinfo)> | Yes | Callback used to return the result. If the operation is successful, **err** is **undefined** and **data** is the distributed account information obtained. Otherwise, **err** is an error object. | 138 139**Example** 140 ```ts 141 import { BusinessError } from '@kit.BasicServicesKit'; 142 143 const accountAbility: distributedAccount.DistributedAccountAbility = distributedAccount.getDistributedAccountAbility(); 144 accountAbility.queryOsAccountDistributedInfo( 145 (err: BusinessError, data: distributedAccount.DistributedInfo) => { 146 if (err) { 147 console.log('queryOsAccountDistributedInfo exception: ' + JSON.stringify(err)); 148 } else { 149 console.log('distributed information: ' + JSON.stringify(data)); 150 } 151 }); 152 ``` 153 154### queryOsAccountDistributedInfo<sup>(deprecated)</sup> 155 156queryOsAccountDistributedInfo(): Promise<DistributedInfo> 157 158Queries distributed account information. This API uses a promise to return the result. 159 160> **NOTE** 161> 162> This API is supported since API version 7 and deprecated since API version 9. Use [getOsAccountDistributedInfo](#getosaccountdistributedinfo9-1) instead. 163 164**System capability**: SystemCapability.Account.OsAccount 165 166**Required permissions**: ohos.permission.MANAGE_LOCAL_ACCOUNTS (available only for system applications) or ohos.permission.DISTRIBUTED_DATASYNC 167 168**Return value** 169 170 | Type | Description | 171 | -------- | -------- | 172 | Promise<[DistributedInfo](#distributedinfo)> | Promise used to return the distributed account information obtained. | 173 174**Example** 175 ```ts 176 import { BusinessError } from '@kit.BasicServicesKit'; 177 178 const accountAbility: distributedAccount.DistributedAccountAbility = distributedAccount.getDistributedAccountAbility(); 179 accountAbility.queryOsAccountDistributedInfo().then((data: distributedAccount.DistributedInfo) => { 180 console.log('distributed information: ' + JSON.stringify(data)); 181 }).catch((err: BusinessError) => { 182 console.log('queryOsAccountDistributedInfo exception: ' + JSON.stringify(err)); 183 }); 184 ``` 185 186### setOsAccountDistributedInfo<sup>9+</sup> 187 188setOsAccountDistributedInfo(accountInfo: DistributedInfo, callback: AsyncCallback<void>): void 189 190Sets the distributed account information. This API uses an asynchronous callback to return the result. 191 192**System capability**: SystemCapability.Account.OsAccount 193 194**Required permissions**: ohos.permission.MANAGE_DISTRIBUTED_ACCOUNTS (available only for system applications) 195 196**Parameters** 197 198 | Name | Type | Mandatory | Description | 199 | -------- | -------- | -------- | -------- | 200 | accountInfo | [DistributedInfo](#distributedinfo) | Yes | Distributed account information to set. | 201 | callback | AsyncCallback<void> | Yes | Callback used to return the result. If the distributed account information is set successfully, **err** is **undefined**. Otherwise, **err** is an error object. | 202 203**Error codes** 204 205| ID | Error Message| 206| -------- | ------------------- | 207| 201 | Permission denied.| 208| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. | 209| 12300001 | System service exception. | 210| 12300002 | Invalid accountInfo. | 211| 12300003 | Account not found. | 212 213**Example** 214 ```ts 215 import { BusinessError } from '@kit.BasicServicesKit'; 216 217 const accountAbility: distributedAccount.DistributedAccountAbility = distributedAccount.getDistributedAccountAbility(); 218 let accountInfo: distributedAccount.DistributedInfo = 219 {id: '12345', name: 'ZhangSan', event: 'Ohos.account.event.LOGIN'}; 220 try { 221 accountAbility.setOsAccountDistributedInfo(accountInfo, (err: BusinessError) => { 222 if (err) { 223 console.log('setOsAccountDistributedInfo exception: ' + JSON.stringify(err)); 224 } else { 225 console.log('setOsAccountDistributedInfo successfully'); 226 } 227 }); 228 } catch (err) { 229 console.log('setOsAccountDistributedInfo exception: ' + JSON.stringify(err)); 230 } 231 ``` 232 233### setOsAccountDistributedInfo<sup>9+</sup> 234 235setOsAccountDistributedInfo(accountInfo: DistributedInfo): Promise<void> 236 237Sets the distributed account information. This API uses a promise to return the result. 238 239**System capability**: SystemCapability.Account.OsAccount 240 241**Required permissions**: ohos.permission.MANAGE_DISTRIBUTED_ACCOUNTS (available only for system applications) 242 243**Parameters** 244 245 | Name | Type | Mandatory | Description | 246 | -------- | -------- | -------- | -------- | 247 | accountInfo | [DistributedInfo](#distributedinfo) | Yes | Distributed account information to set. | 248 249**Return value** 250 251 | Type | Description | 252 | -------- | -------- | 253 | Promise<void> | Promise that returns no value. | 254 255**Error codes** 256 257| ID | Error Message| 258| -------- | ------------------- | 259| 201 | Permission denied.| 260| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. | 261| 12300001 | System service exception. | 262| 12300002 | Invalid accountInfo. | 263| 12300003 | Account not found. | 264 265**Example** 266 ```ts 267 import { BusinessError } from '@kit.BasicServicesKit'; 268 269 const accountAbility: distributedAccount.DistributedAccountAbility = distributedAccount.getDistributedAccountAbility(); 270 let accountInfo: distributedAccount.DistributedInfo = 271 {id: '12345', name: 'ZhangSan', event: 'Ohos.account.event.LOGIN'}; 272 try { 273 accountAbility.setOsAccountDistributedInfo(accountInfo).then(() => { 274 console.log('setOsAccountDistributedInfo successfully'); 275 }).catch((err: BusinessError) => { 276 console.log('setOsAccountDistributedInfo exception: ' + JSON.stringify(err)); 277 }); 278 } catch (err) { 279 console.log('setOsAccountDistributedInfo exception: ' + JSON.stringify(err)); 280 } 281 ``` 282 283### updateOsAccountDistributedInfo<sup>(deprecated)</sup> 284 285updateOsAccountDistributedInfo(accountInfo: DistributedInfo, callback: AsyncCallback<void>): void 286 287Updates the distributed account information. This API uses an asynchronous callback to return the result. 288 289> **NOTE** 290> 291> This API is supported since API version 7 and deprecated since API version 9. Use [setOsAccountDistributedInfo](#setosaccountdistributedinfo9) instead. 292 293**System capability**: SystemCapability.Account.OsAccount 294 295**Required permissions**: ohos.permission.MANAGE_LOCAL_ACCOUNTS (available only for system applications) 296 297**Parameters** 298 299 | Name | Type | Mandatory | Description | 300 | -------- | -------- | -------- | -------- | 301 | accountInfo | [DistributedInfo](#distributedinfo) | Yes | New distributed account information. | 302| callback | AsyncCallback<void> | Yes | Callback used to return the result. If the distributed account information is updated successfully, **err** is **undefined**. Otherwise, **err** is an error object. | 303 304**Example** 305 ```ts 306 import { BusinessError } from '@kit.BasicServicesKit'; 307 308 const accountAbility: distributedAccount.DistributedAccountAbility = distributedAccount.getDistributedAccountAbility(); 309 let accountInfo: distributedAccount.DistributedInfo = 310 {id: '12345', name: 'ZhangSan', event: 'Ohos.account.event.LOGIN'}; 311 accountAbility.updateOsAccountDistributedInfo(accountInfo, (err: BusinessError) => { 312 if (err) { 313 console.log('queryOsAccountDistributedInfo exception: ' + JSON.stringify(err)); 314 } else { 315 console.log('queryOsAccountDistributedInfo successfully'); 316 } 317 }); 318 ``` 319 320### updateOsAccountDistributedInfo<sup>(deprecated)</sup> 321 322updateOsAccountDistributedInfo(accountInfo: DistributedInfo): Promise<void> 323 324Updates the distributed account information. This API uses a promise to return the result. 325> **NOTE** 326> 327> This API is supported since API version 7 and deprecated since API version 9. Use [setOsAccountDistributedInfo](#setosaccountdistributedinfo9-1) instead. 328**System capability**: SystemCapability.Account.OsAccount 329 330**Required permissions**: ohos.permission.MANAGE_LOCAL_ACCOUNTS (available only for system applications) 331 332**Parameters** 333 334 | Name | Type | Mandatory | Description | 335 | -------- | -------- | -------- | -------- | 336 | accountInfo | [DistributedInfo](#distributedinfo) | Yes | New distributed account information. | 337 338**Return value** 339 340 | Type | Description | 341 | -------- | -------- | 342 | Promise<void> | Promise that returns no value. | 343 344**Example** 345 ```ts 346 import { BusinessError } from '@kit.BasicServicesKit'; 347 348 const accountAbility: distributedAccount.DistributedAccountAbility = distributedAccount.getDistributedAccountAbility(); 349 let accountInfo: distributedAccount.DistributedInfo = 350 {id: '12345', name: 'ZhangSan', event: 'Ohos.account.event.LOGIN'}; 351 accountAbility.updateOsAccountDistributedInfo(accountInfo).then(() => { 352 console.log('updateOsAccountDistributedInfo successfully'); 353 }).catch((err: BusinessError) => { 354 console.log('updateOsAccountDistributedInfo exception: ' + JSON.stringify(err)); 355 }); 356 ``` 357 358## DistributedInfo 359 360Represents the distributed information about a system account. 361 362**System capability**: SystemCapability.Account.OsAccount 363 364| Name | Type | Mandatory | Description | 365| -------- | -------- | -------- | -------- | 366| name | string |Yes | Name of the distributed account. It must be a non-null string. | 367| id | string |Yes | UID of the distributed account. It must be a non-null string. | 368| event | string |Yes | Login state of the distributed account. The state can be login, logout, token invalid, or logoff, which correspond to the following strings respectively:<br>- Ohos.account.event.LOGIN<br>- Ohos.account.event.LOGOUT<br>- Ohos.account.event.TOKEN_INVALID<br>- Ohos.account.event.LOGOFF | 369| nickname<sup>9+</sup> | string |No | Nickname of the distributed account. By default, no value is passed in. | 370| avatar<sup>9+</sup> | string |No | Avatar of the distributed account. By default, no value is passed in. | 371| status<sup>10+</sup> | [DistributedAccountStatus](#distributedaccountstatus10) |No | Status of the distributed account. The value is of the enumerated type. The default status is unlogged. | 372| scalableData<sup>8+</sup> | object |No | Additional information about the distributed account, in the form of KV pairs. This parameter is left empty by default.| 373 374## DistributedAccountStatus<sup>10+</sup> 375 376Enumerates the statuses of a distributed account. 377 378**System capability**: SystemCapability.Account.OsAccount 379 380| Name | Value | Description | 381| ---- | ------ | ----------- | 382| NOT_LOGGED_IN | 0 | The account has not logged in. | 383| LOGGED_IN | 1 | The account has logged in. | 384