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<GrantStatus> 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<[GrantStatus](#grantstatus)> | 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<Permissions>, callback: Callback<PermissionStateChangeInfo>): 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<Permissions> | 是 | 订阅的权限名列表,为空时表示订阅所有的权限状态变化,合法的权限名取值可在[应用权限列表](../../security/AccessToken/app-permissions.md)中查询。| 152| callback | Callback<[PermissionStateChangeInfo](#permissionstatechangeinfo18)> | 是 | 订阅指定权限名状态变更事件的回调。| 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<Permissions>, callback?: Callback<PermissionStateChangeInfo>): 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<Permissions> | 是 | 取消订阅的权限名列表,为空时表示取消订阅所有的权限状态变化,必须与on的输入一致,合法的权限名取值可在[应用权限列表](../../security/AccessToken/app-permissions.md)中查询。 | 199| callback | Callback<[PermissionStateChangeInfo](#permissionstatechangeinfo18)> | 否 | 取消订阅指定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<Permissions>, requestCallback: AsyncCallback<PermissionRequestResult>): 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<Permissions> | 是 | 权限名列表,合法的权限名取值可在[应用权限列表](../../security/AccessToken/app-permissions.md)中查询。 | 250| requestCallback | AsyncCallback<[PermissionRequestResult](js-apis-permissionrequestresult.md)> | 是 | 回调函数,返回接口调用是否成功的结果。 | 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<Permissions>): Promise<PermissionRequestResult> 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<Permissions> | 是 | 需要校验的权限名称,合法的权限名取值可在[应用权限列表](../../security/AccessToken/app-permissions.md)中查询。 | 308 309**返回值:** 310 311| 类型 | 说明 | 312| -------- | -------- | 313| Promise<[PermissionRequestResult](js-apis-permissionrequestresult.md)> | 返回一个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<Permissions>): Promise<Array<GrantStatus>> 348 349用于UIAbility/UIExtensionAbility二次拉起权限设置弹框。 350 351在调用此接口前,应用需要先调用[requestPermissionsFromUser](#requestpermissionsfromuser9),如果用户在首次弹窗授权时已授权,调用当前接口将无法拉起弹窗。 352 353> **说明:** 354> 355> 仅支持UIAbility/UIExtensionAbility。 356 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<Permissions> | 是 | 权限名列表,合法的权限名取值可在[应用权限组列表](../../security/AccessToken/app-permission-group-list.md)中查询。 | 369 370**返回值:** 371 372| 类型 | 说明 | 373| :------------ | :---------------------------------- | 374| Promise<Array<[GrantStatus](#grantstatus)>> | 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<boolean> 407 408用于UIAbility/UIExtensionAbility拉起全局开关设置弹框。 409 410部分情况下,录音、拍照等功能禁用,应用可拉起此弹框请求用户同意开启对应功能。如果当前全局开关的状态为开启,则不拉起弹框。 411 412> **说明:** 413> 414> 仅支持UIAbility/UIExtensionAbility。 415 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<boolean> | 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<GrantStatus> 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<[GrantStatus](#grantstatus)> | 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<GrantStatus> 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<[GrantStatus](#grantstatus)> | 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的上下文的能力,包括访问特定应用程序的资源等。 |