1# 访问控制管理 2 3> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** 4> 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 5 6## 导入模块 7 8```js 9import abilityAccessCtrl from '@ohos.abilityAccessCtrl' 10``` 11 12## abilityAccessCtrl.createAtManager 13 14createAtManager(): AtManager 15 16访问控制管理:获取访问控制模块对象。 17 18**系统能力:** SystemCapability.Security.AccessToken 19 20 21**返回值:** 22 23| 类型 | 说明 | 24| -------- | -------- | 25| [AtManager](#atmanager) | 获取访问控制模块的实例。 | 26 27**示例:** 28 29``` 30var AtManager = abilityAccessCtrl.createAtManager(); 31``` 32 33## AtManager 34 35管理访问控制模块的实例。 36 37### verifyAccessToken 38 39verifyAccessToken(tokenID: number, permissionName: string): Promise<GrantStatus> 40 41校验应用是否授予权限,使用Promise方式异步返回结果。 42 43**系统能力:** SystemCapability.Security.AccessToken 44 45**参数:** 46 47| 参数名 | 类型 | 必填 | 说明 | 48| -------- | ------------------- | ---- | ------------------------------------------ | 49| tokenID | number | 是 | 要校验的目标应用的身份标识。 | 50| permissionName | string | 是 | 需要校验的权限名称。 | 51 52**返回值:** 53 54| 类型 | 说明 | 55| :------------ | :---------------------------------- | 56| Promise<GrantStatus> | Promise实例,用于获取异步返回的授权状态结果。 | 57 58**示例:** 59 60``` 61var AtManager = abilityAccessCtrl.createAtManager(); 62let tokenID = 0; 63let promise = AtManager.verifyAccessToken(tokenID, "ohos.permission.GRANT_SENSITIVE_PERMISSIONS"); 64promise.then(data => { 65 console.log(`promise: data->${JSON.stringify(data)}`); 66}); 67``` 68 69### grantUserGrantedPermission 70 71grantUserGrantedPermission(tokenID: number, permissionName: string, permissionFlags: number): Promise<number> 72 73授予应用user grant权限,使用Promise方式异步返回结果。 74 75此接口为系统接口。 76 77**需要权限:** ohos.permission.GRANT_SENSITIVE_PERMISSIONS 78 79**系统能力:** SystemCapability.Security.AccessToken 80 81**参数:** 82 83| 参数名 | 类型 | 必填 | 说明 | 84| --------- | ------------------- | ---- | ------------------------------------------------------------ | 85| tokenID | number | 是 | 目标应用的身份标识。 | 86| permissionName | string | 是 | 被授予的权限名称。 | 87| permissionFlags | number | 是 | 授权选项<br>- 0表示权限未经过用户主动设置。<br>- 1表示当次用户若选择禁止该权限,下次权限弹窗仍可以弹出申请用户授权。<br>- 2表示当次用户若选择禁止该权限,下次不会再弹出权限弹窗,需要用户在setting的权限管理中进行授权。<br>- 4表示当次权限设置为系统授权,用户不可更改这个权限授权状态。 | 88 89**返回值:** 90 91| 类型 | 说明 | 92| :------------ | :---------------------------------- | 93| Promise<number> | Promise实例,用于获取异步返回的授权操作结果。 | 94 95**示例:** 96 97``` 98var AtManager = abilityAccessCtrl.createAtManager(); 99let tokenID = 0; 100let permissionFlags = 1; 101let promise = AtManager.grantUserGrantedPermission(tokenID, "ohos.permission.GRANT_SENSITIVE_PERMISSIONS", permissionFlags); 102promise.then(data => { 103 console.log(`promise: data->${JSON.stringify(data)}`); 104}); 105``` 106 107 108 109### grantUserGrantedPermission 110 111grantUserGrantedPermission(tokenID: number, permissionName: string, permissionFlags: number, callback: AsyncCallback<number>): void 112 113授予应用user grant权限,使用callback回调异步返回结果。 114 115此接口为系统接口。 116 117**需要权限:** ohos.permission.GRANT_SENSITIVE_PERMISSIONS 118 119**系统能力:** SystemCapability.Security.AccessToken 120 121**参数:** 122 123| 参数名 | 类型 | 必填 | 说明 | 124| --------- | ------------------- | ---- | ------------------------------------------------------------ | 125| tokenID | number | 是 | 目标应用的身份标识。 | 126| permissionName | string | 是 | 被授予的权限名称。 | 127| permissionFlags | number | 是 | 授权选项<br>- 0表示权限未经过用户主动设置。<br>- 1表示当次用户若选择禁止该权限,下次权限弹窗仍可以弹出申请用户授权。<br>- 2表示当次用户若选择禁止该权限,下次不会再弹出权限弹窗,需要用户在setting的权限管理中进行授权。<br>- 4表示当次权限设置为系统授权,用户不可更改这个权限授权状态。 | 128| callback | AsyncCallback<number> | 是 | 检查授予应用user grant权限的操作结果同步的回调。 | 129 130**示例:** 131 132``` 133var AtManager = abilityAccessCtrl.createAtManager(); 134let tokenID = 0; 135let permissionFlags = 1; 136AtManager.grantUserGrantedPermission(tokenID, "ohos.permission.GRANT_SENSITIVE_PERMISSIONS",permissionFlags, data => { 137 console.log(`callback: data->${JSON.stringify(data)}`); 138}); 139``` 140 141### revokeUserGrantedPermission 142 143revokeUserGrantedPermission(tokenID: number, permissionName: string, permissionFlags: number): Promise<number> 144 145撤销应用user grant权限,使用Promise方式异步返回结果。 146 147此接口为系统接口。 148 149**需要权限:** ohos.permission.REVOKE_SENSITIVE_PERMISSIONS 150 151**系统能力:** SystemCapability.Security.AccessToken 152 153**参数:** 154 155| 参数名 | 类型 | 必填 | 说明 | 156| --------- | ------------------- | ---- | ------------------------------------------------------------ | 157| tokenID | number | 是 | 目标应用的身份标识。 | 158| permissionName | string | 是 | 被撤销的权限名称。 | 159| permissionFlags | number | 是 | 授权选项<br>- 0表示权限未经过用户主动设置。<br>- 1表示当次用户若选择禁止该权限,下次权限弹窗仍可以弹出申请用户授权。<br>- 2表示当次用户若选择禁止该权限,下次不会再弹出权限弹窗,需要用户在setting的权限管理中进行授权。<br>- 4表示当次权限设置为系统授权,用户不可更改这个权限授权状态。 | 160 161**返回值:** 162 163| 类型 | 说明 | 164| :------------ | :---------------------------------- | 165| Promise<number> | Promise实例,用于获取异步返回的授权操作结果。 | 166 167**示例:** 168 169``` 170var AtManager = abilityAccessCtrl.createAtManager(); 171let tokenID = 0; 172let permissionFlags = 1; 173let promise = AtManager.revokeUserGrantedPermission(tokenID, "ohos.permission.GRANT_SENSITIVE_PERMISSIONS", permissionFlags); 174promise.then(data => { 175 console.log(`promise: data->${JSON.stringify(data)}`); 176}); 177``` 178 179### revokeUserGrantedPermission 180 181revokeUserGrantedPermission(tokenID: number, permissionName: string, permissionFlags: number, callback: AsyncCallback<number>): void 182 183撤销应用user grant权限,使用callback回调异步返回结果。 184 185此接口为系统接口。 186 187**需要权限:** ohos.permission.REVOKE_SENSITIVE_PERMISSIONS 188 189**系统能力:** SystemCapability.Security.AccessToken 190 191**参数:** 192 193| 参数名 | 类型 | 必填 | 说明 | 194| --------- | ------------------- | ---- | ------------------------------------------------------------ | 195| tokenID | number | 是 | 目标应用的身份标识。 | 196| permissionName | string | 是 | 被撤销的权限名称。 | 197| permissionFlags | number | 是 | 授权选项<br>- 0表示权限未经过用户主动设置。<br>- 1表示当次用户若选择禁止该权限,下次权限弹窗仍可以弹出申请用户授权。<br>- 2表示当次用户若选择禁止该权限,下次不会再弹出权限弹窗,需要用户在setting的权限管理中进行授权。<br>- 4表示当次权限设置为系统授权,用户不可更改这个权限授权状态。 | 198| callback | AsyncCallback<number> | 是 | 检查撤销应用user grant权限的操作结果同步的回调。 | 199 200**示例:** 201 202``` 203var AtManager = abilityAccessCtrl.createAtManager(); 204let tokenID = 0; 205let permissionFlags = 1; 206AtManager.revokeUserGrantedPermission(tokenID, "ohos.permission.GRANT_SENSITIVE_PERMISSIONS",permissionFlags, data => { 207 console.log(`callback: data->${JSON.stringify(data)}`); 208}); 209``` 210 211### getPermissionFlags 212 213getPermissionFlags(tokenID: number, permissionName: string): Promise<number> 214 215获取指定应用的指定权限的flag,使用Promise方式异步返回结果。 216 217此接口为系统接口。 218 219**需要权限:** ohos.permission.GET_SENSITIVE_PERMISSIONS or GRANT_SENSITIVE_PERMISSIONS or REVOKE_SENSITIVE_PERMISSIONS 220 221**系统能力:** SystemCapability.Security.AccessToken 222 223**参数:** 224 225| 参数名 | 类型 | 必填 | 说明 | 226| --------- | ------------------- | ---- | ------------------------------------------------------------ | 227| tokenID | number | 是 | 目标应用的身份标识。 | 228| permissionName | string | 是 | 查询的权限名称。 | 229 230**返回值:** 231 232| 类型 | 说明 | 233| :------------ | :---------------------------------- | 234| Promise<number> | Promise实例,用于获取异步返回的查询结果。 | 235 236**示例:** 237 238``` 239var AtManager = abilityAccessCtrl.createAtManager(); 240let tokenID = 0; 241let promise = AtManager.getPermissionFlags(tokenID, "ohos.permission.GRANT_SENSITIVE_PERMISSIONS"); 242promise.then(data => { 243 console.log(`promise: data->${JSON.stringify(data)}`); 244}); 245``` 246 247### GrantStatus 248 249表示授权状态的枚举。 250 251**系统能力:** 以下各项对应的系统能力均为SystemCapability.Security.AccessToken 252 253| 名称 | 默认值 | 描述 | 254| ----------------------------- | ---------------------- | ----------------------- | 255| PERMISSION_DENIED | -1 | 表示未授权。 | 256| PERMISSION_GRANTED | 0 | 表示已授权。 |