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| Distributed account information to set.| 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 329**System capability**: SystemCapability.Account.OsAccount 330 331**Required permissions**: ohos.permission.MANAGE_LOCAL_ACCOUNTS (available only for system applications) 332 333**Parameters** 334 335 | Name| Type| Mandatory| Description| 336 | -------- | -------- | -------- | -------- | 337 | accountInfo | [DistributedInfo](#distributedinfo) | Yes| Distributed account information.| 338 339**Return value** 340 341 | Type| Description| 342 | -------- | -------- | 343 | Promise<void> | Promise that returns no value.| 344 345**Example** 346 ```ts 347 import { BusinessError } from '@kit.BasicServicesKit'; 348 349 const accountAbility: distributedAccount.DistributedAccountAbility = distributedAccount.getDistributedAccountAbility(); 350 let accountInfo: distributedAccount.DistributedInfo = 351 {id: '12345', name: 'ZhangSan', event: 'Ohos.account.event.LOGIN'}; 352 accountAbility.updateOsAccountDistributedInfo(accountInfo).then(() => { 353 console.log('updateOsAccountDistributedInfo successfully'); 354 }).catch((err: BusinessError) => { 355 console.log('updateOsAccountDistributedInfo exception: ' + JSON.stringify(err)); 356 }); 357 ``` 358 359## DistributedInfo 360 361Represents the distributed information about a system account. 362 363**System capability**: SystemCapability.Account.OsAccount 364 365| Name| Type| Mandatory| Description| 366| -------- | -------- | -------- | -------- | 367| name | string |Yes| Name of the distributed account. It must be a non-null string.| 368| id | string |Yes| UID of the distributed account. It must be a non-null string.| 369| 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 | 370| nickname<sup>9+</sup> | string |No| Nickname of the distributed account. By default, no value is passed in.| 371| avatar<sup>9+</sup> | string |No| Avatar of the distributed account. By default, no value is passed in.| 372| status<sup>10+</sup> | [DistributedAccountStatus](#distributedaccountstatus10) |No| Status of the distributed account. The value is of the enumerated type. The default status is unlogged.| 373| 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.| 374 375## DistributedAccountStatus<sup>10+</sup> 376 377Enumerates the statuses of a distributed account. 378 379**System capability**: SystemCapability.Account.OsAccount 380 381| Name | Value| Description | 382| ---- | ------ | ----------- | 383| NOT_LOGGED_IN | 0 | The account has not logged in.| 384| LOGGED_IN | 1 | The account has logged in.| 385