程序访问控制管理

2024-01-23 15:55 更新

程序访问控制提供程序的权限管理能力,包括鉴权、授权和取消授权等。

说明

本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

导入模块

  1. import abilityAccessCtrl from '@ohos.abilityAccessCtrl'

abilityAccessCtrl.createAtManager

createAtManager(): AtManager

访问控制管理:获取访问控制模块对象。

系统能力: SystemCapability.Security.AccessToken

返回值:

类型

说明

AtManager

获取访问控制模块的实例。

示例:

  1. let atManager = abilityAccessCtrl.createAtManager();

AtManager

管理访问控制模块的实例。

checkAccessToken9+

checkAccessToken(tokenID: number, permissionName: Permissions): Promise<GrantStatus>

校验应用是否授予权限。使用Promise异步回调。

系统能力: SystemCapability.Security.AccessToken

参数:

参数名

类型

必填

说明

tokenID

number

要校验的目标应用的身份标识。可通过应用的ApplicationInfo获得。

permissionName

Permissions

需要校验的权限名称,合法的权限名取值可在系统权限定义列表中查询。

返回值:

类型

说明

Promise<GrantStatus>

Promise对象。返回授权状态结果。

错误码:

以下错误码的详细介绍请参见程序访问控制错误码

错误码ID

错误信息

12100001

The parameter is invalid. The tokenID is 0, or the string size of permissionName is larger than 256.

示例:

  1. import abilityAccessCtrl from '@ohos.abilityAccessCtrl';
  2. let atManager = abilityAccessCtrl.createAtManager();
  3. let tokenID = 0; // 系统应用可以通过bundleManager.getApplicationInfo获取,普通应用可以通过bundleManager.getBundleInfoForSelf获取
  4. try {
  5. atManager.checkAccessToken(tokenID, "ohos.permission.GRANT_SENSITIVE_PERMISSIONS").then((data) => {
  6. console.log(`checkAccessToken success, data->${JSON.stringify(data)}`);
  7. }).catch((err) => {
  8. console.log(`checkAccessToken fail, err->${JSON.stringify(err)}`);
  9. });
  10. } catch(err) {
  11. console.log(`catch err->${JSON.stringify(err)}`);
  12. }

verifyAccessTokenSync9+

verifyAccessTokenSync(tokenID: number, permissionName: Permissions): GrantStatus

校验应用是否被授予权限,同步返回结果。

系统能力: SystemCapability.Security.AccessToken

参数:

参数名

类型

必填

说明

tokenID

number

要校验应用的身份标识。可通过应用的ApplicationInfo获得。

permissionName

Permissions

需要校验的权限名称,合法的权限名取值可在系统权限定义列表中查询。

返回值:

类型

说明

GrantStatus

枚举实例,返回授权状态。

错误码:

以下错误码的详细介绍请参见程序访问控制错误码

错误码ID

错误信息

12100001

The parameter is invalid. The tokenID is 0, or the string size of permissionName is larger than 256.

示例:

  1. let atManager = abilityAccessCtrl.createAtManager();
  2. let tokenID = 0; // 系统应用可以通过bundleManager.getApplicationInfo获取,普通应用可以通过bundleManager.getBundleInfoForSelf获取
  3. let data = atManager.verifyAccessTokenSync(tokenID, "ohos.permission.GRANT_SENSITIVE_PERMISSIONS");
  4. console.log(`data->${JSON.stringify(data)}`);

verifyAccessToken9+

verifyAccessToken(tokenID: number, permissionName: Permissions): Promise<GrantStatus>

校验应用是否授予权限。使用Promise异步回调。

说明

建议使用checkAccessToken替代。

系统能力: SystemCapability.Security.AccessToken

参数:

参数名

类型

必填

说明

tokenID

number

要校验的目标应用的身份标识。可通过应用的ApplicationInfo获得。

permissionName

Permissions

需要校验的权限名称,合法的权限名取值可在系统权限定义列表中查询。

返回值:

类型

说明

Promise<GrantStatus>

Promise对象。返回授权状态结果。

示例:

  1. import abilityAccessCtrl from '@ohos.abilityAccessCtrl';
  2. let atManager = abilityAccessCtrl.createAtManager();
  3. let tokenID = 0; // 系统应用可以通过bundleManager.getApplicationInfo获取,普通应用可以通过bundleManager.getBundleInfoForSelf获取
  4. let promise = atManager.verifyAccessToken(tokenID, "ohos.permission.GRANT_SENSITIVE_PERMISSIONS");
  5. promise.then(data => {
  6. console.log(`promise: data->${JSON.stringify(data)}`);
  7. });

requestPermissionsFromUser9+

requestPermissionsFromUser(context: Context, permissionList: Array<Permissions>, requestCallback: AsyncCallback<PermissionRequestResult>) : void;

用于UIAbility拉起弹框请求用户授权。使用callback异步回调。

说明

非UIAbility不支持调用本函数。

模型约束:此接口仅可在Stage模型下使用。

系统能力: SystemCapability.Security.AccessToken

参数:

参数名

类型

必填

说明

context

Context

请求权限的UIAbility的UIAbilityContext。

permissionList

Array<Permissions>

权限名列表,合法的权限名取值可在系统权限定义列表中查询。

callback

AsyncCallback<PermissionRequestResult>

回调函数,返回接口调用是否成功的结果。

错误码:

以下错误码的详细介绍请参见程序访问控制错误码

错误码ID

错误信息

12100001

The parameter is invalid. The context is invalid when it does not belong to the application itself.

示例:

  1. import abilityAccessCtrl from '@ohos.abilityAccessCtrl';
  2. let atManager = abilityAccessCtrl.createAtManager();
  3. try {
  4. atManager.requestPermissionsFromUser(this.context, ["ohos.permission.CAMERA"], (err, data)=>{
  5. console.info("data:" + JSON.stringify(data));
  6. console.info("data permissions:" + data.permissions);
  7. console.info("data authResults:" + data.authResults);
  8. });
  9. } catch(err) {
  10. console.log(`catch err->${JSON.stringify(err)}`);
  11. }

requestPermissionsFromUser9+

requestPermissionsFromUser(context: Context, permissionList: Array<Permissions>) : Promise<PermissionRequestResult>;

用于UIAbility拉起弹框请求用户授权。使用promise异步回调。

说明

非UIAbility不支持调用本函数。

模型约束:此接口仅可在Stage模型下使用。

系统能力: SystemCapability.Security.AccessToken

参数:

参数名

类型

必填

说明

context

Context

请求权限的UIAbility的UIAbilityContext。

permissionList

Array<Permissions>

需要校验的权限名称,合法的权限名取值可在系统权限定义列表中查询。

返回值:

类型

说明

Promise<PermissionRequestResult>

返回一个Promise,包含接口的结果。

错误码:

以下错误码的详细介绍请参见程序访问控制错误码

错误码ID

错误信息

12100001

The parameter is invalid. The context is invalid when it does not belong to the application itself.

示例:

  1. import abilityAccessCtrl from '@ohos.abilityAccessCtrl';
  2. let atManager = abilityAccessCtrl.createAtManager();
  3. try {
  4. atManager.requestPermissionsFromUser(this.context, ["ohos.permission.CAMERA"]).then((data) => {
  5. console.info("data:" + JSON.stringify(data));
  6. console.info("data permissions:" + data.permissions);
  7. console.info("data authResults:" + data.authResults);
  8. }).catch((err) => {
  9. console.info("data:" + JSON.stringify(err));
  10. })
  11. } catch(err) {
  12. console.log(`catch err->${JSON.stringify(err)}`);
  13. }

verifyAccessToken(deprecated)

verifyAccessToken(tokenID: number, permissionName: string): Promise<GrantStatus>

校验应用是否授予权限。使用Promise异步回调。

说明

从API version 9开始不再维护,建议使用checkAccessToken替代。

系统能力: SystemCapability.Security.AccessToken

参数:

参数名

类型

必填

说明

tokenID

number

要校验的目标应用的身份标识。可通过应用的ApplicationInfo获得。

permissionName

string

需要校验的权限名称。

返回值:

类型

说明

Promise<GrantStatus>

Promise对象。返回授权状态结果。

示例:

  1. import abilityAccessCtrl from '@ohos.abilityAccessCtrl';
  2. let atManager = abilityAccessCtrl.createAtManager();
  3. let tokenID = 0; // 系统应用可以通过bundleManager.getApplicationInfo获取,普通应用可以通过bundleManager.getBundleInfoForSelf获取
  4. let promise = atManager.verifyAccessToken(tokenID, "ohos.permission.GRANT_SENSITIVE_PERMISSIONS");
  5. promise.then(data => {
  6. console.log(`promise: data->${JSON.stringify(data)}`);
  7. });

GrantStatus

表示授权状态的枚举。

系统能力: SystemCapability.Security.AccessToken

名称

说明

PERMISSION_DENIED

-1

表示未授权。

PERMISSION_GRANTED

0

表示已授权。

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号