1# 管理应用账号
2
3应用开发者可以使用[应用账号SDK](../../reference/apis-basic-services-kit/js-apis-appAccount.md)管理本应用的账号数据。
4
5能力限制:应用卸载场景下,被卸载应用的账号数据会被删除;本地账号删除场景下,被删除本地账号下的所有应用的账号数据会被删除。
6
7## 开发准备
8
91. 导入应用账号模块。
10
11   ```ts
12   import { appAccount, BusinessError } from '@kit.BasicServicesKit';
13   ```
14
152. 获取应用账号的实例对象。
16
17   ```ts
18   const appAccountManager = appAccount.createAppAccountManager();
19   ```
20
21## 创建应用账号
22
23用户在应用中登录后,开发者可以在系统中创建一个关联的应用账号,后续可以基于此账号进行数据管理。
24
25具体开发实例如下:
26
271. 参数准备,指定账号名和可选配置。
28
29   ```ts
30   let name: string = "ZhangSan";
31   let options: appAccount.CreateAccountOptions = {
32     customData: {
33       age: '10'
34     }
35   };
36   ```
37
382. 调用[createAccount](../../reference/apis-basic-services-kit/js-apis-appAccount.md#createaccount9)接口,根据名称和选项创建应用账号。
39
40   ```ts
41   try {
42     await appAccountManager.createAccount(name, options);
43     console.log('createAccount successfully');
44   } catch (err) {
45     console.log('createAccount failed, error: ' + JSON.stringify(err));
46   }
47   ```
48
49## 查询应用账号列表
50
51具体开发实例如下:
52
53
54调用[getAllAccounts](../../reference/apis-basic-services-kit/js-apis-appAccount.md#getallaccounts9)接口查询账号列表。
55
56   ```ts
57   appAccountManager.getAllAccounts().then((data: appAccount.AppAccountInfo[]) => {
58       console.debug('getAllAccounts successfully, data: ' + JSON.stringify(data));
59   }).catch((err: BusinessError) => {
60       console.debug('getAllAccounts failed, error: ' + JSON.stringify(err));
61   });
62   ```
63
64## 存取账号的凭据
65
66具体开发实例如下:
67
681. 准备参数,指定账号名、凭据类型和凭据。
69
70   ```ts
71   let name: string = 'ZhangSan';
72   let credentialType: string = 'PIN_SIX';
73   let credential: string = 'xxxxxx';
74   ```
75
762. 调用[getCredential](../../reference/apis-basic-services-kit/js-apis-appAccount.md#getcredential9)接口,获取账号的凭据。
77
78   ```ts
79   appAccountManager.getCredential(name, credentialType).then((data: string) => {
80       console.log('getCredential successfully, data: ' + data);
81   }).catch((err: BusinessError) => {
82       console.log('getCredential failed, error: ' + JSON.stringify(err));
83   });
84   ```
85
863. 调用[setCredential](../../reference/apis-basic-services-kit/js-apis-appAccount.md#setcredential9)接口,设置账号的凭据。
87
88   ```ts
89   appAccountManager.setCredential(name, credentialType, credential).then(() => {
90       console.log('setCredential successfully');
91   }).catch((err: BusinessError) => {
92       console.log('setCredential failed: ' + JSON.stringify(err));
93   });
94   ```
95
96## 存取账号的自定义数据
97
98具体开发实例如下:
99
1001. 准备参数,指定账号名和自定义键值。
101
102   ```ts
103   let name: string = 'ZhangSan';
104   let key: string = 'age';
105   let value: string = '12';
106   ```
107
1082. 调用[setCustomData](../../reference/apis-basic-services-kit/js-apis-appAccount.md#setcustomdata9)接口,设置账号的自定义数据。
109
110   ```ts
111   appAccountManager.setCustomData(name, key, value).then(() => {
112       console.log('setCustomData successfully');
113   }).catch((err: BusinessError) => {
114       console.log('setCustomData failed: ' + JSON.stringify(err));
115   });
116   ```
117
1183. 调用[getCustomData](../../reference/apis-basic-services-kit/js-apis-appAccount.md#getcustomdata9)接口,获取账号的自定义数据。
119
120   ```ts
121   appAccountManager.getCustomData(name, key).then((data: string) => {
122       console.log('getCustomData successfully, data: ' + data);
123   }).catch((err: BusinessError) => {
124       console.log('getCustomData failed, error: ' + JSON.stringify(err));
125   });
126   ```
127
128## 存取账号的授权令牌
129
130具体开发实例如下:
131
1321. 准备参数,指定账号名、账号所有者、授权类型和授权令牌。
133
134   ```ts
135   let name: string = 'ZhangSan';
136   let owner: string = 'com.example.accountjsdemo';
137   let authType: string = 'getSocialData';
138   let token: string = 'xxxxxx';
139   ```
140
1412. 调用[setAuthToken](../../reference/apis-basic-services-kit/js-apis-appAccount.md#setauthtoken9)接口,设置指定授权类型的授权令牌。
142
143   ```ts
144   appAccountManager.setAuthToken(name, authType, token).then(() => {
145       console.log('setAuthToken successfully');
146   }).catch((err: BusinessError) => {
147       console.log('setAuthToken failed: ' + JSON.stringify(err));
148   });
149   ```
150
1513. 调用[getAuthToken](../../reference/apis-basic-services-kit/js-apis-appAccount.md#getauthtoken9)接口,获取指定授权类型的授权令牌。
152
153   ```ts
154   appAccountManager.getAuthToken(name, owner, authType).then((data: string) => {
155       console.log('getAuthToken successfully, data: ' + data);
156   }).catch((err: BusinessError) => {
157       console.log('getAuthToken failed, error: ' + JSON.stringify(err));
158   });
159   ```
160
161## 删除应用账号
162
163用户退出登录后,应用需及时将相应的应用账号从系统中删除。
164
165具体开发实例如下:
166
167指定要删除的账号名称,调用[removeAccount](../../reference/apis-basic-services-kit/js-apis-appAccount.md#removeaccount9)接口删除账号。
168
169   ```ts
170   let name: string = 'Zhangsan';
171   appAccountManager.removeAccount(name).then(() => {
172       console.log('removeAccount successfully');
173   }).catch((err: BusinessError) => {
174       console.log('removeAccount failed, error: ' + JSON.stringify(err));
175   });
176   ```
177
178<!--RP1-->
179<!--RP1End-->