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&lt;DistributedInfo&gt;): 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&lt;[DistributedInfo](#distributedinfo)&gt; | 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&lt;DistributedInfo&gt;
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&lt;[DistributedInfo](#distributedinfo)&gt; | 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&lt;DistributedInfo&gt;): 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&lt;[DistributedInfo](#distributedinfo)&gt; | 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&lt;DistributedInfo&gt;
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&lt;[DistributedInfo](#distributedinfo)&gt; | 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&lt;void&gt;): 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&lt;void&gt; | 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&lt;void&gt;
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&lt;void&gt; | 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&lt;void&gt;): 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&lt;void&gt; | 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&lt;void&gt;
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&lt;void&gt; | 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>-&nbsp;Ohos.account.event.LOGIN<br>-&nbsp;Ohos.account.event.LOGOUT<br>-&nbsp;Ohos.account.event.TOKEN_INVALID<br>-&nbsp;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