• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.abilityAccessCtrl (程序访问控制管理)
2
3程序访问控制提供程序的权限管理能力,包括鉴权、授权等。
4
5> **说明:**
6> 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
7
8## 导入模块
9
10```ts
11import { abilityAccessCtrl } from '@kit.AbilityKit'
12```
13
14## abilityAccessCtrl.createAtManager
15
16createAtManager(): AtManager
17
18访问控制管理:获取访问控制模块对象。
19
20**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
21
22**系统能力:** SystemCapability.Security.AccessToken
23
24
25**返回值:**
26
27| 类型 | 说明 |
28| -------- | -------- |
29| [AtManager](#atmanager) | 获取访问控制模块的实例。 |
30
31**示例:**
32
33```ts
34let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
35```
36
37## AtManager
38
39管理访问控制模块的实例。
40
41### checkAccessToken<sup>9+</sup>
42
43checkAccessToken(tokenID: number, permissionName: Permissions): Promise&lt;GrantStatus&gt;
44
45校验应用是否授予权限。使用Promise异步回调。
46
47**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
48
49**系统能力:** SystemCapability.Security.AccessToken
50
51**参数:**
52
53| 参数名   | 类型                 | 必填 | 说明                                       |
54| -------- | -------------------  | ---- | ------------------------------------------ |
55| tokenID   |  number   | 是   | 要校验的目标应用的身份标识,可通过应用的[ApplicationInfo](js-apis-bundleManager-applicationInfo.md)的accessTokenId字段获得。|
56| permissionName | Permissions | 是   | 需要校验的权限名称,合法的权限名取值可在[应用权限列表](../../security/AccessToken/app-permissions.md)中查询。 |
57
58**返回值:**
59
60| 类型          | 说明                                |
61| :------------ | :---------------------------------- |
62| Promise&lt;[GrantStatus](#grantstatus)&gt; | Promise对象,返回授权状态结果。 |
63
64**错误码:**
65
66以下错误码的详细介绍请参见[访问控制错误码](errorcode-access-token.md)。
67
68| 错误码ID | 错误信息 |
69| -------- | -------- |
70| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified; 2.Incorrect parameter types. |
71| 12100001 | Invalid parameter. The tokenID is 0, or the permissionName exceeds 256 characters. |
72
73**示例:**
74
75```ts
76import { abilityAccessCtrl } from '@kit.AbilityKit';
77import { BusinessError } from '@kit.BasicServicesKit';
78
79let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
80let tokenID: number = 0; // 系统应用可以通过bundleManager.getApplicationInfo获取,三方应用可以通过bundleManager.getBundleInfoForSelf获取
81atManager.checkAccessToken(tokenID, 'ohos.permission.GRANT_SENSITIVE_PERMISSIONS').then((data: abilityAccessCtrl.GrantStatus) => {
82  console.log(`checkAccessToken success, data->${JSON.stringify(data)}`);
83}).catch((err: BusinessError) => {
84  console.error(`checkAccessToken fail, err->${JSON.stringify(err)}`);
85});
86```
87
88### checkAccessTokenSync<sup>10+</sup>
89
90checkAccessTokenSync(tokenID: number, permissionName: Permissions): GrantStatus
91
92校验应用是否被授予权限,同步返回结果。
93
94**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
95
96**系统能力:** SystemCapability.Security.AccessToken
97
98**参数:**
99
100| 参数名   | 类型                 | 必填 | 说明                                       |
101| -------- | -------------------  | ---- | ------------------------------------------ |
102| tokenID   |  number   | 是   | 要校验应用的身份标识,可通过应用的[ApplicationInfo](js-apis-bundleManager-applicationInfo.md)的accessTokenId字段获得。|
103| permissionName | Permissions | 是   | 需要校验的权限名称,合法的权限名取值可在[应用权限列表](../../security/AccessToken/app-permissions.md)中查询。 |
104
105**返回值:**
106
107| 类型          | 说明                                |
108| :------------ | :---------------------------------- |
109| [GrantStatus](#grantstatus) | 枚举实例,返回授权状态。 |
110
111**错误码:**
112
113以下错误码的详细介绍请参见[访问控制错误码](errorcode-access-token.md)。
114
115| 错误码ID | 错误信息 |
116| -------- | -------- |
117| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified; 2.Incorrect parameter types. |
118| 12100001 | Invalid parameter. The tokenID is 0, or the permissionName exceeds 256 characters. |
119
120**示例:**
121
122```ts
123import { abilityAccessCtrl, Permissions } from '@kit.AbilityKit';
124
125let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
126let tokenID: number = 0; // 系统应用可以通过bundleManager.getApplicationInfo获取,三方应用可以通过bundleManager.getBundleInfoForSelf获取
127let permissionName: Permissions = 'ohos.permission.GRANT_SENSITIVE_PERMISSIONS';
128let data: abilityAccessCtrl.GrantStatus = atManager.checkAccessTokenSync(tokenID, permissionName);
129console.log(`data->${JSON.stringify(data)}`);
130```
131
132### on<sup>18+</sup>
133
134on(type: 'selfPermissionStateChange', permissionList: Array&lt;Permissions&gt;, callback: Callback&lt;PermissionStateChangeInfo&gt;): void
135
136订阅自身的指定权限列表的权限状态变更事件。
137
138允许指定权限列表订阅多个callback。
139
140不允许存在交集权限列表订阅相同callback。
141
142**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
143
144**系统能力:** SystemCapability.Security.AccessToken
145
146**参数:**
147
148| 参数名             | 类型                   | 必填 | 说明                                                          |
149| ------------------ | --------------------- | ---- | ------------------------------------------------------------ |
150| type               | string                | 是   | 订阅事件类型,固定为'selfPermissionStateChange',自身权限状态变更事件。  |
151| permissionList | Array&lt;Permissions&gt;   | 是   | 订阅的权限名列表,为空时表示订阅所有的权限状态变化,合法的权限名取值可在[应用权限列表](../../security/AccessToken/app-permissions.md)中查询。|
152| callback | Callback&lt;[PermissionStateChangeInfo](#permissionstatechangeinfo18)&gt; | 是 | 订阅指定权限名状态变更事件的回调。|
153
154**错误码:**
155
156以下错误码的详细介绍请参见[访问控制错误码](errorcode-access-token.md)。
157
158| 错误码ID | 错误信息 |
159| -------- | -------- |
160| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified; 2.Incorrect parameter types. |
161| 12100001 | Invalid parameter. The permissionName exceeds 256 characters. |
162| 12100004 | The API is used repeatedly with the same input. |
163| 12100005 | The registration time has exceeded the limitation. |
164| 12100007 | The service is abnormal. |
165
166**示例:**
167
168```ts
169import { abilityAccessCtrl, Permissions } from '@kit.AbilityKit';
170
171let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
172let permissionList: Array<Permissions> = ['ohos.permission.APPROXIMATELY_LOCATION'];
173try {
174    atManager.on('selfPermissionStateChange', permissionList, (data: abilityAccessCtrl.PermissionStateChangeInfo) => {
175        console.log('receive permission state change, data:' + JSON.stringify(data));
176    });
177} catch(err) {
178    console.error(`catch err->${JSON.stringify(err)}`);
179}
180```
181### off<sup>18+</sup>
182
183off(type: 'selfPermissionStateChange', permissionList: Array&lt;Permissions&gt;, callback?: Callback&lt;PermissionStateChangeInfo&gt;): void
184
185取消订阅自身指定权限列表的权限状态变更事件,使用callback回调异步返回结果。
186
187取消订阅不传callback时,批量删除permissionList下面的所有callback。
188
189**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
190
191**系统能力:** SystemCapability.Security.AccessToken
192
193**参数:**
194
195| 参数名             | 类型                   | 必填 | 说明                                                          |
196| ------------------ | --------------------- | ---- | ------------------------------------------------------------ |
197| type               | string         | 是   | 订阅事件类型,固定为'selfPermissionStateChange',权限状态变更事件。  |
198| permissionList | Array&lt;Permissions&gt;   | 是   | 取消订阅的权限名列表,为空时表示取消订阅所有的权限状态变化,必须与on的输入一致,合法的权限名取值可在[应用权限列表](../../security/AccessToken/app-permissions.md)中查询。 |
199| callback | Callback&lt;[PermissionStateChangeInfo](#permissionstatechangeinfo18)&gt; | 否 | 取消订阅指定tokenId与指定权限名状态变更事件的回调。|
200
201**错误码:**
202
203以下错误码的详细介绍请参见[访问控制错误码](errorcode-access-token.md)。
204
205| 错误码ID | 错误信息 |
206| -------- | -------- |
207| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified; 2.Incorrect parameter types. |
208| 12100001 | Invalid parameter. The permissionNames in the list are all invalid. |
209| 12100004 | The API is not used in pair with 'on'. |
210| 12100007 | The service is abnormal. |
211
212**示例:**
213
214```ts
215import { abilityAccessCtrl, Permissions } from '@kit.AbilityKit';
216
217let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
218let permissionList: Array<Permissions> = ['ohos.permission.APPROXIMATELY_LOCATION'];
219try {
220    atManager.off('selfPermissionStateChange', permissionList);
221} catch(err) {
222    console.error(`catch err->${JSON.stringify(err)}`);
223}
224```
225
226### requestPermissionsFromUser<sup>9+</sup>
227
228requestPermissionsFromUser(context: Context, permissionList: Array&lt;Permissions&gt;, requestCallback: AsyncCallback&lt;PermissionRequestResult&gt;): void
229
230用于<!--RP1-->UIAbility<!--RP1End-->拉起弹框请求用户授权。使用callback异步回调。
231
232如果用户拒绝授权,将无法再次拉起弹框,需要用户在系统应用“设置”的界面中,手动授予权限。或是调用[requestPermissionOnSetting](#requestpermissiononsetting12),拉起权限设置弹框,引导用户授权。
233
234> **说明:**
235>
236> 仅支持<!--RP1-->UIAbility<!--RP1End-->。
237
238**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
239
240**模型约束**:此接口仅可在Stage模型下使用。
241
242**系统能力**: SystemCapability.Security.AccessToken
243
244**参数:**
245
246| 参数名 | 类型 | 必填 | 说明 |
247| -------- | -------- | -------- | -------- |
248| context | [Context](js-apis-inner-application-context.md) | 是 | 请求权限的<!--RP1-->UIAbility<!--RP1End-->的Context。 |
249| permissionList | Array&lt;Permissions&gt; | 是 | 权限名列表,合法的权限名取值可在[应用权限列表](../../security/AccessToken/app-permissions.md)中查询。 |
250| requestCallback | AsyncCallback&lt;[PermissionRequestResult](js-apis-permissionrequestresult.md)&gt; | 是 | 回调函数,返回接口调用是否成功的结果。 |
251
252**错误码:**
253
254以下错误码的详细介绍请参见[访问控制错误码](errorcode-access-token.md)。
255
256| 错误码ID | 错误信息 |
257| -------- | -------- |
258| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified; 2.Incorrect parameter types. |
259| 12100001 | Invalid parameter. The context is invalid when it does not belong to the application itself. |
260
261**示例:**
262
263下述示例中context的获取方式请参见[获取UIAbility的上下文信息](../../application-models/uiability-usage.md#获取uiability的上下文信息)。
264关于向用户申请授权的完整流程及示例,请参见[向用户申请授权](../../security/AccessToken/request-user-authorization.md)。
265
266```ts
267import { abilityAccessCtrl, Context, PermissionRequestResult, common } from '@kit.AbilityKit';
268import { BusinessError } from '@kit.BasicServicesKit';
269
270let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
271let context: Context = this.getUIContext().getHostContext() as common.UIAbilityContext;
272atManager.requestPermissionsFromUser(context, ['ohos.permission.CAMERA'], (err: BusinessError, data: PermissionRequestResult) => {
273  if (err) {
274    console.error(`requestPermissionsFromUser fail, err->${JSON.stringify(err)}`);
275  } else {
276    console.info('data:' + JSON.stringify(data));
277    console.info('data permissions:' + data.permissions);
278    console.info('data authResults:' + data.authResults);
279    console.info('data dialogShownResults:' + data.dialogShownResults);
280  }
281});
282```
283
284### requestPermissionsFromUser<sup>9+</sup>
285
286requestPermissionsFromUser(context: Context, permissionList: Array&lt;Permissions&gt;): Promise&lt;PermissionRequestResult&gt;
287
288用于<!--RP1-->UIAbility<!--RP1End-->拉起弹框请求用户授权。使用promise异步回调。
289
290如果用户拒绝授权,将无法再次拉起弹框,需要用户在系统应用“设置”的界面中,手动授予权限。或是调用[requestPermissionOnSetting](#requestpermissiononsetting12),拉起权限设置弹框,引导用户授权。
291
292> **说明:**
293>
294> 仅支持<!--RP1-->UIAbility<!--RP1End-->。
295
296**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
297
298**模型约束**:此接口仅可在Stage模型下使用。
299
300**系统能力**: SystemCapability.Security.AccessToken
301
302**参数:**
303
304| 参数名 | 类型 | 必填 | 说明 |
305| -------- | -------- | -------- | -------- |
306| context | [Context](js-apis-inner-application-context.md) | 是 | 请求权限的<!--RP1-->UIAbility<!--RP1End-->的Context。 |
307| permissionList | Array&lt;Permissions&gt; | 是 | 需要校验的权限名称,合法的权限名取值可在[应用权限列表](../../security/AccessToken/app-permissions.md)中查询。 |
308
309**返回值:**
310
311| 类型 | 说明 |
312| -------- | -------- |
313| Promise&lt;[PermissionRequestResult](js-apis-permissionrequestresult.md)&gt; | 返回一个Promise,包含接口的结果。 |
314
315**错误码:**
316
317以下错误码的详细介绍请参见[访问控制错误码](errorcode-access-token.md)。
318
319| 错误码ID | 错误信息 |
320| -------- | -------- |
321| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified; 2.Incorrect parameter types. |
322| 12100001 | Invalid parameter. The context is invalid when it does not belong to the application itself. |
323
324**示例:**
325
326下述示例中context的获取方式请参见[获取UIAbility的上下文信息](../../application-models/uiability-usage.md#获取uiability的上下文信息)。
327关于向用户申请授权的完整流程及示例,请参见[向用户申请授权](../../security/AccessToken/request-user-authorization.md)。
328
329```ts
330import { abilityAccessCtrl, Context, PermissionRequestResult, common } from '@kit.AbilityKit';
331import { BusinessError } from '@kit.BasicServicesKit';
332
333let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
334let context: Context = this.getUIContext().getHostContext() as common.UIAbilityContext;
335atManager.requestPermissionsFromUser(context, ['ohos.permission.CAMERA']).then((data: PermissionRequestResult) => {
336  console.info('data:' + JSON.stringify(data));
337  console.info('data permissions:' + data.permissions);
338  console.info('data authResults:' + data.authResults);
339  console.info('data dialogShownResults:' + data.dialogShownResults);
340}).catch((err: BusinessError) => {
341  console.error('data:' + JSON.stringify(err));
342});
343```
344
345### requestPermissionOnSetting<sup>12+</sup>
346
347requestPermissionOnSetting(context: Context, permissionList: Array&lt;Permissions&gt;): Promise&lt;Array&lt;GrantStatus&gt;&gt;
348
349用于UIAbility/UIExtensionAbility二次拉起权限设置弹框。
350
351在调用此接口前,应用需要先调用[requestPermissionsFromUser](#requestpermissionsfromuser9),如果用户在首次弹窗授权时已授权,调用当前接口将无法拉起弹窗。
352
353> **说明:**
354>
355> 仅支持UIAbility/UIExtensionAbility356
357**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
358
359**模型约束**:此接口仅可在Stage模型下使用。
360
361**系统能力**: SystemCapability.Security.AccessToken
362
363**参数:**
364
365| 参数名 | 类型 | 必填 | 说明 |
366| -------- | -------- | -------- | -------- |
367| context | [Context](js-apis-inner-application-context.md) | 是 | 请求权限的UIAbility/UIExtensionAbility的Context。 |
368| permissionList | Array&lt;Permissions&gt; | 是 | 权限名列表,合法的权限名取值可在[应用权限组列表](../../security/AccessToken/app-permission-group-list.md)中查询。 |
369
370**返回值:**
371
372| 类型          | 说明                                |
373| :------------ | :---------------------------------- |
374| Promise&lt;Array&lt;[GrantStatus](#grantstatus)&gt;&gt; | Promise对象,返回授权状态结果。 |
375
376**错误码:**
377
378以下错误码的详细介绍请参见[访问控制错误码](errorcode-access-token.md)。
379
380| 错误码ID | 错误信息 |
381| -------- | -------- |
382| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified; 2.Incorrect parameter types. |
383| 12100001 | Invalid parameter. Possible causes: 1. The context is invalid because it does not belong to the application itself; 2. The permission list contains the permission that is not declared in the module.json file; 3. The permission list is invalid because the permissions in it do not belong to the same permission group. |
384| 12100010 | The request already exists. |
385| 12100011 | All permissions in the permission list have been granted. |
386| 12100012 | The permission list contains the permission that has not been revoked by the user. |
387
388**示例:**
389示例中context的获取方式请参见[获取UIAbility的上下文信息](../../application-models/uiability-usage.md#获取uiability的上下文信息)。
390
391```ts
392import { abilityAccessCtrl, Context, common } from '@kit.AbilityKit';
393import { BusinessError } from '@kit.BasicServicesKit';
394
395let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
396let context: Context = this.getUIContext().getHostContext() as common.UIAbilityContext;
397atManager.requestPermissionOnSetting(context, ['ohos.permission.CAMERA']).then((data: Array<abilityAccessCtrl.GrantStatus>) => {
398  console.info('data:' + JSON.stringify(data));
399}).catch((err: BusinessError) => {
400  console.error('data:' + JSON.stringify(err));
401});
402```
403
404### requestGlobalSwitch<sup>12+</sup>
405
406requestGlobalSwitch(context: Context, type: SwitchType): Promise&lt;boolean&gt;
407
408用于UIAbility/UIExtensionAbility拉起全局开关设置弹框。
409
410部分情况下,录音、拍照等功能禁用,应用可拉起此弹框请求用户同意开启对应功能。如果当前全局开关的状态为开启,则不拉起弹框。
411
412> **说明:**
413>
414> 仅支持UIAbility/UIExtensionAbility415
416**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
417
418**模型约束**:此接口仅可在Stage模型下使用。
419
420**系统能力**: SystemCapability.Security.AccessToken
421
422**参数:**
423
424| 参数名 | 类型 | 必填 | 说明 |
425| -------- | -------- | -------- | -------- |
426| context | [Context](js-apis-inner-application-context.md) | 是 | 请求权限的UIAbility/UIExtensionAbility>的Context。 |
427| type | [SwitchType](#switchtype12) | 是 | 全局开关类型。 |
428
429**返回值:**
430
431| 类型          | 说明                                |
432| :------------ | :---------------------------------- |
433| Promise&lt;boolean&gt; | Promise对象,返回全局开关状态。 |
434
435**错误码:**
436
437以下错误码的详细介绍请参见[访问控制错误码](errorcode-access-token.md)。
438
439| 错误码ID | 错误信息 |
440| -------- | -------- |
441| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
442| 12100001 | Invalid parameter. Possible causes: 1. The context is invalid because it does not belong to the application itself; 2. The type of global switch is not support. |
443| 12100010 | The request already exists. |
444| 12100013 | The specific global switch is already open. |
445
446**示例:**
447示例中context的获取方式请参见[获取UIAbility的上下文信息](../../application-models/uiability-usage.md#获取uiability的上下文信息)。
448
449```ts
450import { abilityAccessCtrl, Context, common } from '@kit.AbilityKit';
451import { BusinessError } from '@kit.BasicServicesKit';
452
453let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
454let context: Context = this.getUIContext().getHostContext() as common.UIAbilityContext;
455atManager.requestGlobalSwitch(context, abilityAccessCtrl.SwitchType.CAMERA).then((data: Boolean) => {
456  console.info('data:' + JSON.stringify(data));
457}).catch((err: BusinessError) => {
458  console.error('data:' + JSON.stringify(err));
459});
460```
461
462### verifyAccessTokenSync<sup>9+</sup>
463
464verifyAccessTokenSync(tokenID: number, permissionName: Permissions): GrantStatus
465
466校验应用是否被授予权限,同步返回结果。
467
468**系统能力:** SystemCapability.Security.AccessToken
469
470**参数:**
471
472| 参数名   | 类型                 | 必填 | 说明                                       |
473| -------- | -------------------  | ---- | ------------------------------------------ |
474| tokenID   |  number   | 是   | 要校验应用的身份标识,可通过应用的[ApplicationInfo](js-apis-bundleManager-applicationInfo.md)的accessTokenId字段获得。|
475| permissionName | Permissions | 是   | 需要校验的权限名称,合法的权限名取值可在[应用权限列表](../../security/AccessToken/app-permissions.md)中查询。 |
476
477**返回值:**
478
479| 类型          | 说明                                |
480| :------------ | :---------------------------------- |
481| [GrantStatus](#grantstatus) | 枚举实例,返回授权状态。 |
482
483**错误码:**
484
485以下错误码的详细介绍请参见[访问控制错误码](errorcode-access-token.md)。
486
487| 错误码ID | 错误信息 |
488| -------- | -------- |
489| 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified; 2.Incorrect parameter types. |
490| 12100001 | Invalid parameter. The tokenID is 0, or the permissionName exceeds 256 characters. |
491
492**示例:**
493
494```ts
495import { abilityAccessCtrl } from '@kit.AbilityKit';
496
497let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
498let tokenID: number = 0; // 系统应用可以通过bundleManager.getApplicationInfo获取,三方应用可以通过bundleManager.getBundleInfoForSelf获取
499try {
500  let data: abilityAccessCtrl.GrantStatus = atManager.verifyAccessTokenSync(tokenID, 'ohos.permission.GRANT_SENSITIVE_PERMISSIONS');
501  console.log(`data->${JSON.stringify(data)}`);
502} catch(err) {
503  console.error(`catch err->${JSON.stringify(err)}`);
504}
505```
506
507### verifyAccessToken<sup>9+</sup>
508
509verifyAccessToken(tokenID: number, permissionName: Permissions): Promise&lt;GrantStatus&gt;
510
511校验应用是否授予权限。使用Promise异步回调。
512
513> **说明:**
514>
515> 建议使用[checkAccessToken](#checkaccesstoken9)替代。
516
517**系统能力:** SystemCapability.Security.AccessToken
518
519**参数:**
520
521| 参数名   | 类型                 | 必填 | 说明                                       |
522| -------- | -------------------  | ---- | ------------------------------------------ |
523| tokenID   |  number   | 是   | 要校验的目标应用的身份标识,可通过应用的[ApplicationInfo](js-apis-bundleManager-applicationInfo.md)的accessTokenId字段获得。|
524| permissionName | Permissions | 是   | 需要校验的权限名称,合法的权限名取值可在[应用权限列表](../../security/AccessToken/app-permissions.md)中查询。 |
525
526**返回值:**
527
528| 类型          | 说明                                |
529| :------------ | :---------------------------------- |
530| Promise&lt;[GrantStatus](#grantstatus)&gt; | Promise对象,返回授权状态结果。 |
531
532**示例:**
533
534```ts
535import { abilityAccessCtrl, Permissions } from '@kit.AbilityKit';
536import { BusinessError } from '@kit.BasicServicesKit';
537
538let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
539let tokenID: number = 0; // 系统应用可以通过bundleManager.getApplicationInfo获取,三方应用可以通过bundleManager.getBundleInfoForSelf获取
540let permissionName: Permissions = 'ohos.permission.GRANT_SENSITIVE_PERMISSIONS';
541atManager.verifyAccessToken(tokenID, permissionName).then((data: abilityAccessCtrl.GrantStatus) => {
542  console.log(`promise: data->${JSON.stringify(data)}`);
543}).catch((err: BusinessError) => {
544  console.error(`verifyAccessToken fail, err->${JSON.stringify(err)}`);
545});
546```
547
548### verifyAccessToken<sup>(deprecated)</sup>
549
550verifyAccessToken(tokenID: number, permissionName: string): Promise&lt;GrantStatus&gt;
551
552校验应用是否授予权限。使用Promise异步回调。
553
554> **说明:**
555>
556> 从API version 9开始不再维护,建议使用[checkAccessToken](#checkaccesstoken9)替代。
557
558**系统能力:** SystemCapability.Security.AccessToken
559
560**参数:**
561
562| 参数名   | 类型                 | 必填 | 说明                                       |
563| -------- | -------------------  | ---- | ------------------------------------------ |
564| tokenID   |  number   | 是   | 要校验的目标应用的身份标识,可通过应用的[ApplicationInfo](js-apis-bundleManager-applicationInfo.md)的accessTokenId字段获得。|
565| permissionName | string | 是   | 需要校验的权限名称,合法的权限名取值可在[应用权限列表](../../security/AccessToken/app-permissions.md)中查询。 |
566
567**返回值:**
568
569| 类型          | 说明                                |
570| :------------ | :---------------------------------- |
571| Promise&lt;[GrantStatus](#grantstatus)&gt; | Promise对象,返回授权状态结果。 |
572
573**示例:**
574
575```ts
576import { abilityAccessCtrl } from '@kit.AbilityKit';
577import { BusinessError } from '@kit.BasicServicesKit';
578
579let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
580let tokenID: number = 0; // 系统应用可以通过bundleManager.getApplicationInfo获取,三方应用可以通过bundleManager.getBundleInfoForSelf获取
581atManager.verifyAccessToken(tokenID, 'ohos.permission.GRANT_SENSITIVE_PERMISSIONS').then((data: abilityAccessCtrl.GrantStatus) => {
582  console.log(`promise: data->${JSON.stringify(data)}`);
583}).catch((err: BusinessError) => {
584  console.error(`verifyAccessToken fail, err->${JSON.stringify(err)}`);
585});
586```
587
588## GrantStatus
589
590表示授权状态的枚举。
591
592**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
593
594**系统能力:** SystemCapability.Security.AccessToken
595
596| 名称               |    值 | 说明        |
597| ------------------ | ----- | ----------- |
598| PERMISSION_DENIED  | -1    | 表示未授权。 |
599| PERMISSION_GRANTED | 0     | 表示已授权。 |
600
601## SwitchType<sup>12+</sup>
602
603表示全局开关类型。
604
605**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
606
607**系统能力:** SystemCapability.Security.AccessToken
608
609| 名称               |    值 | 说明        |
610| ------------------ | ----- | ----------- |
611| CAMERA  | 0    | 表示相机全局开关。 |
612| MICROPHONE | 1     | 表示麦克风全局开关。 |
613| LOCATION | 2     | 表示位置全局开关。 |
614
615## PermissionStateChangeType<sup>18+</sup>
616
617表示权限授权状态变化操作类型的枚举。
618
619**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
620
621**系统能力:** SystemCapability.Security.AccessToken
622
623| 名称                     |    值 | 说明              |
624| ----------------------- | ------ | ----------------- |
625| PERMISSION_REVOKED_OPER | 0      | 表示权限取消操作。 |
626| PERMISSION_GRANTED_OPER | 1      | 表示权限授予操作。 |
627
628## PermissionStateChangeInfo<sup>18+</sup>
629
630表示某次权限授权状态变化的详情。
631
632**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。
633
634**系统能力:** SystemCapability.Security.AccessToken
635
636| 名称           | 类型                       | 只读 | 可选 | 说明                |
637| -------------- | ------------------------- | ---- | ---- | ------------------ |
638| change         | [PermissionStateChangeType](#permissionstatechangetype18) | 是   | 否   | 权限授权状态变化类型。        |
639| tokenID        | number                    | 是   | 否   | 被订阅的应用身份标识,可通过应用的[ApplicationInfo](js-apis-bundleManager-applicationInfo.md)的accessTokenId字段获得。|
640| permissionName | Permissions                    | 是   | 否   | 当前授权状态发生变化的权限名,合法的权限名取值可在[应用权限列表](../../security/AccessToken/app-permissions.md)中查询。 |
641
642## PermissionRequestResult<sup>10+</sup>
643
644type PermissionRequestResult = _PermissionRequestResult
645
646权限请求结果对象。
647
648**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
649
650**模型约束**:此接口仅可在Stage模型下使用。
651
652**系统能力:** SystemCapability.Security.AccessToken
653
654| 类型 | 说明 |
655| -------- | -------- |
656| [_PermissionRequestResult](js-apis-permissionrequestresult.md) | 权限请求结果对象。 |
657
658## Context<sup>10+</sup>
659
660type Context = _Context
661
662提供了ability或application的上下文的能力,包括访问特定应用程序的资源等。
663
664**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
665
666**模型约束**:此接口仅可在Stage模型下使用。
667
668**系统能力:** SystemCapability.Security.AccessToken
669
670| 类型 | 说明 |
671| -------- | -------- |
672| [_Context](js-apis-inner-application-context.md) | 提供了ability或application的上下文的能力,包括访问特定应用程序的资源等。 |