程序訪問控制管理

2024-01-23 15:55 更新

程序訪問控制提供程序的權(quán)限管理能力,包括鑒權(quán)、授權(quán)和取消授權(quán)等。

說明

本模塊首批接口從API version 8開始支持。后續(xù)版本的新增接口,采用上角標(biāo)單獨(dú)標(biāo)記接口的起始版本。

導(dǎo)入模塊

  1. import abilityAccessCtrl from '@ohos.abilityAccessCtrl'

abilityAccessCtrl.createAtManager

createAtManager(): AtManager

訪問控制管理:獲取訪問控制模塊對象。

系統(tǒng)能力: SystemCapability.Security.AccessToken

返回值:

類型

說明

AtManager

獲取訪問控制模塊的實(shí)例。

示例:

  1. let atManager = abilityAccessCtrl.createAtManager();

AtManager

管理訪問控制模塊的實(shí)例。

checkAccessToken9+

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

校驗(yàn)應(yīng)用是否授予權(quán)限。使用Promise異步回調(diào)。

系統(tǒng)能力: SystemCapability.Security.AccessToken

參數(shù):

參數(shù)名

類型

必填

說明

tokenID

number

要校驗(yàn)的目標(biāo)應(yīng)用的身份標(biāo)識??赏ㄟ^應(yīng)用的ApplicationInfo獲得。

permissionName

Permissions

需要校驗(yàn)的權(quán)限名稱,合法的權(quán)限名取值可在系統(tǒng)權(quán)限定義列表中查詢。

返回值:

類型

說明

Promise<GrantStatus>

Promise對象。返回授權(quán)狀態(tài)結(jié)果。

錯誤碼:

以下錯誤碼的詳細(xì)介紹請參見程序訪問控制錯誤碼

錯誤碼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; // 系統(tǒng)應(yīng)用可以通過bundleManager.getApplicationInfo獲取,普通應(yīng)用可以通過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

校驗(yàn)應(yīng)用是否被授予權(quán)限,同步返回結(jié)果。

系統(tǒng)能力: SystemCapability.Security.AccessToken

參數(shù):

參數(shù)名

類型

必填

說明

tokenID

number

要校驗(yàn)應(yīng)用的身份標(biāo)識。可通過應(yīng)用的ApplicationInfo獲得。

permissionName

Permissions

需要校驗(yàn)的權(quán)限名稱,合法的權(quán)限名取值可在系統(tǒng)權(quán)限定義列表中查詢。

返回值:

類型

說明

GrantStatus

枚舉實(shí)例,返回授權(quán)狀態(tài)。

錯誤碼:

以下錯誤碼的詳細(xì)介紹請參見程序訪問控制錯誤碼。

錯誤碼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; // 系統(tǒng)應(yīng)用可以通過bundleManager.getApplicationInfo獲取,普通應(yīng)用可以通過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>

校驗(yàn)應(yīng)用是否授予權(quán)限。使用Promise異步回調(diào)。

說明

建議使用checkAccessToken替代。

系統(tǒng)能力: SystemCapability.Security.AccessToken

參數(shù):

參數(shù)名

類型

必填

說明

tokenID

number

要校驗(yàn)的目標(biāo)應(yīng)用的身份標(biāo)識??赏ㄟ^應(yīng)用的ApplicationInfo獲得。

permissionName

Permissions

需要校驗(yàn)的權(quán)限名稱,合法的權(quán)限名取值可在系統(tǒng)權(quán)限定義列表中查詢。

返回值:

類型

說明

Promise<GrantStatus>

Promise對象。返回授權(quán)狀態(tài)結(jié)果。

示例:

  1. import abilityAccessCtrl from '@ohos.abilityAccessCtrl';
  2. let atManager = abilityAccessCtrl.createAtManager();
  3. let tokenID = 0; // 系統(tǒng)應(yīng)用可以通過bundleManager.getApplicationInfo獲取,普通應(yīng)用可以通過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拉起彈框請求用戶授權(quán)。使用callback異步回調(diào)。

說明

非UIAbility不支持調(diào)用本函數(shù)。

模型約束:此接口僅可在Stage模型下使用。

系統(tǒng)能力: SystemCapability.Security.AccessToken

參數(shù):

參數(shù)名

類型

必填

說明

context

Context

請求權(quán)限的UIAbility的UIAbilityContext。

permissionList

Array<Permissions>

權(quán)限名列表,合法的權(quán)限名取值可在系統(tǒng)權(quán)限定義列表中查詢。

callback

AsyncCallback<PermissionRequestResult>

回調(diào)函數(shù),返回接口調(diào)用是否成功的結(jié)果。

錯誤碼:

以下錯誤碼的詳細(xì)介紹請參見程序訪問控制錯誤碼。

錯誤碼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拉起彈框請求用戶授權(quán)。使用promise異步回調(diào)。

說明

非UIAbility不支持調(diào)用本函數(shù)。

模型約束:此接口僅可在Stage模型下使用。

系統(tǒng)能力: SystemCapability.Security.AccessToken

參數(shù):

參數(shù)名

類型

必填

說明

context

Context

請求權(quán)限的UIAbility的UIAbilityContext。

permissionList

Array<Permissions>

需要校驗(yàn)的權(quán)限名稱,合法的權(quán)限名取值可在系統(tǒng)權(quán)限定義列表中查詢。

返回值:

類型

說明

Promise<PermissionRequestResult>

返回一個Promise,包含接口的結(jié)果。

錯誤碼:

以下錯誤碼的詳細(xì)介紹請參見程序訪問控制錯誤碼。

錯誤碼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>

校驗(yàn)應(yīng)用是否授予權(quán)限。使用Promise異步回調(diào)。

說明

從API version 9開始不再維護(hù),建議使用checkAccessToken替代。

系統(tǒng)能力: SystemCapability.Security.AccessToken

參數(shù):

參數(shù)名

類型

必填

說明

tokenID

number

要校驗(yàn)的目標(biāo)應(yīng)用的身份標(biāo)識??赏ㄟ^應(yīng)用的ApplicationInfo獲得。

permissionName

string

需要校驗(yàn)的權(quán)限名稱。

返回值:

類型

說明

Promise<GrantStatus>

Promise對象。返回授權(quán)狀態(tài)結(jié)果。

示例:

  1. import abilityAccessCtrl from '@ohos.abilityAccessCtrl';
  2. let atManager = abilityAccessCtrl.createAtManager();
  3. let tokenID = 0; // 系統(tǒng)應(yīng)用可以通過bundleManager.getApplicationInfo獲取,普通應(yīng)用可以通過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

表示授權(quán)狀態(tài)的枚舉。

系統(tǒng)能力: SystemCapability.Security.AccessToken

名稱

說明

PERMISSION_DENIED

-1

表示未授權(quán)。

PERMISSION_GRANTED

0

表示已授權(quán)。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號