diff --git a/zh-cn/application-dev/reference/apis/js-apis-appAccount-authorizationExtensionAbility.md b/zh-cn/application-dev/reference/apis/js-apis-appAccount-authorizationExtensionAbility.md new file mode 100644 index 0000000000000000000000000000000000000000..ede119f8e3321f934d74a539c65ddc8eec570425 --- /dev/null +++ b/zh-cn/application-dev/reference/apis/js-apis-appAccount-authorizationExtensionAbility.md @@ -0,0 +1,70 @@ +# @ohos.account.appAccount.AuthorizationExtensionAbility (应用帐号授权扩展能力) + +**AuthorizationExtensionAbility**基于ExtensionAbility框架,提供应用帐号授权的能力。 + +> **说明:** +> +> 本模块首批接口从API version 10开始支持,后续版本的新增接口,采用上角标单独标记接口的起始版本。 + +## 导入模块 + +```ts +import AuthorizationExtensionAbility from '@ohos.account.appAccount.AuthorizationExtensionAbility'; +``` + +## AuthorizationRequest + +帐号授权请求信息。 + +**系统接口:** 此接口为系统接口。 + +**系统能力:** SystemCapability.Account.AppAccount + +| 名称 | 类型 | 可读 | 可写 | 说明 | +| --------- | ------------------------------- | ---- | ---- | ------------------------------------ | +| callerUid | number | 是 | 否 | 调用方UID。 | +| parameters | [appAccount.AccountCapabilityRequest](js-apis-appAccount.md#accountcapabilityrequest10) | 是 | 否 | 业务参数。 | + +## AuthorizationCallback + +帐号授权回调方法类。 + +**系统接口:** 此接口为系统接口。 + +**系统能力:** SystemCapability.Account.AppAccount + +| 名称 | 类型 | 可读 | 可写 | 说明 | +| --------- | ------------------------------- | ---- | ---- | ------------------------------------ | +| onResult | AsyncCallback<[appAccount.AccountCapabilityResponse](js-apis-appAccount.md#accountcapabilityresponse10), { [key: string]: object }> | 是 | 否 | 表示授权结果的回调方法。 | + +## AuthorizationExtensionAbility.onStartAuthorization + +onStartAuthorization(request: AuthorizationRequest, callback: AuthorizationCallback): void + +开始处理授权请求的回调方法。当有新的帐号授权请求到达时,框架会回调此接口。 + +**系统接口:** 此接口为系统接口。 + +**系统能力:** SystemCapability.Account.AppAccount + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------------------------- | ---- | ----------------------- | +| request | [AuthorizationRequest](#authorizationrequest) | 是 | 授权请求信息。 | +| callback | [AuthorizationCallback](#authorizationcallback) | 是 | 授权回调对象。 | + +**示例:** + +```ts +class MyAuthorizationExtensionAbility extends AuthorizationExtensionAbility { + onStartAuthorization(request: AuthorizationRequest, callback: AuthorizationCallback) { + console.log('onStartAuthorization, callerUid: ' + request.callerUid + ', parameters: ' + request.parameters); + let response = { + name: 'xxxx', + scopes: ['xxx', 'xxx'] + }; + callback.onResult(null, response); + } +}; +``` diff --git a/zh-cn/application-dev/reference/apis/js-apis-appAccount.md b/zh-cn/application-dev/reference/apis/js-apis-appAccount.md index 1a77efd65f85cfb6fd4c28b2df583f51889a6454..31d2b7a8ef33384558e1b2b030b3decfcd56c0a1 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-appAccount.md +++ b/zh-cn/application-dev/reference/apis/js-apis-appAccount.md @@ -4980,4 +4980,299 @@ getRemoteObject(): rpc.RemoteObject; return authenticator.getRemoteObject(); } } - ``` \ No newline at end of file + ``` + +## AccountCapabilityType10+ + +表示帐号能力类型枚举。 + +**系统能力:** SystemCapability.Account.AppAccount + +| 名称 | 值 | 说明 | +| ---------------- | ----- | ----------------------- | +| AUTHORIZATION | 1 | 表示授权能力类型。 | + +## AccountCapabilityProvider10+ + +帐号能力提供者基类。 + +### 属性 + +**系统能力:** SystemCapability.Account.AppAccount + +| 名称 | 类型 | 可读 | 可写 | 说明 | +| -------- | -------- | -------- | -------- | -------- | +| capabilityType | [AccountCapabilityType](#accountcapabilitytype10) | 是 | 否 | 表示帐号能力类型。 | + +### constructor10+ + +constructor(capabilityType: AccountCapabilityType) + +帐号能力提供者基类构造函数。 + +**系统能力:** SystemCapability.Account.AppAccount + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ------ | ------ | ---- | ------------------------------------- | +| capabilityType | [AccountCapabilityType](#accountcapabilitytype10) | 是 | 表示帐号能力类型。 | + +**示例:** + +```ts +class MyAuthorizationProvider extends account_appAccount.AccountCapabilityProvider { + constructor() { + super(account_appAccount.AccountCapabilityType.AUTHORIZATION); + } +} + +try { + let provider = new MyAuthorizationProvider(); + if (provider instanceof account_appAccount.AccountCapabilityProvider) { + console.log("the provider is an instance of AccountCapabilityProvider"); + } +} catch (err) { + console.error('catch error: ' + JSON.stringify(err)); +} +``` + +## AccountCapabilityRequest10+ + +帐号能力请求基类。 + +### constructor10+ + +constructor(provider: AccountCapabilityProvider) + +帐号能力请求基类构造函数。 + +**系统能力:** SystemCapability.Account.AppAccount + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ------ | ------ | ---- | ------------------------------------- | +| provider | [AccountCapabilityProvider](#accountcapabilityprovider10) | 是 | 表示帐号能力的提供者。 | + +**示例:** + +```ts +class MyAuthorizationProvider extends account_appAccount.AccountCapabilityProvider { + constructor() { + super(account_appAccount.AccountCapabilityType.AUTHORIZATION); + } +} + +class MyAuthorizationRequest extends account_appAccount.AccountCapabilityRequest { + constructor() { + let provider = new MyAuthorizationProvider(); + super(provider); + } +} + +try { + let request = new MyAuthorizationRequest(); + if (request instanceof account_appAccount.AccountCapabilityRequest) { + console.log("the request is an instance of AccountCapabilityRequest"); + } +} catch (err) { + console.error('catch error: ' + JSON.stringify(err)); +} +``` + +## AccountCapabilityResponse10+ + +帐号能力响应基类。 + +### 属性 + +**系统能力:** SystemCapability.Account.AppAccount + +| 名称 | 类型 | 可读 | 可写 | 说明 | +| -------- | -------- | -------- | -------- | -------- | +| request | [AccountCapabilityRequest](#accountcapabilityrequest10) | 是 | 否 | 表示此响应对应的帐号能力请求。 | + +### constructor10+ + +constructor(request: AccountCapabilityRequest) + +帐号能力响应基类构造函数。 + +**系统能力:** SystemCapability.Account.AppAccount + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ------ | ------ | ---- | ------------------------------------- | +| request | [AccountCapabilityRequest](#accountcapabilityrequest10) | 是 | 表示此响应对应的帐号能力请求。 | + +**示例:** + +```ts +class MyAuthorizationProvider extends account_appAccount.AccountCapabilityProvider { + constructor() { + super(account_appAccount.AccountCapabilityType.AUTHORIZATION); + } +} + +class MyAuthorizationRequest extends account_appAccount.AccountCapabilityRequest { + constructor() { + let provider = new MyAuthorizationProvider(); + super(provider); + } +} + +class MyAuthorizationResponse extends account_appAccount.AccountCapabilityResponse { + constructor(request) { + super(request) + } +} + +try { + let request = new MyAuthorizationRequest(); + let response = new MyAuthorizationResponse(request); + if (response instanceof account_appAccount.AccountCapabilityResponse) { + console.log("the response is an instance of AccountCapabilityResponse"); + } +} catch (err) { + console.error('catch error: ' + JSON.stringify(err)); +} +``` + +## AuthorizationProviderInfo10+ + +表示帐号授权能力提供者信息。 + +**系统能力:** SystemCapability.Account.AppAccount + +| 名称 | 类型 | 可读 | 可写 | 说明 | +| ------- | ------ | ---- | --- | ---------- | +| bundleName | string | 是 | 否 | 授权能力提供者的Bundle名。 | +| abilityName | string | 是 | 否 | 授权能力提供者的Ability名。 | + +## AuthorizationProvider10+ + +帐号授权能力提供者类。 + +### constructor10+ + +constructor(info: AuthorizationProviderInfo) + +帐号授权能力提供者类构造函数。 + +**系统能力:** SystemCapability.Account.AppAccount + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ------ | ------ | ---- | ------------------------------------- | +| info | [AuthorizationProviderInfo](#authorizationproviderinfo10) | 是 | 表示帐号能力提供者的信息。 | + +**示例:** + +```ts +class MyAuthorizationProvider extends account_appAccount.AuthorizationProvider { + constructor() { + super({bundleName: 'xxx', abilityName: 'xxx'}); + } +} + +try { + let provider = new MyAuthorizationProvider(); + if (provider instanceof account_appAccount.AuthorizationProvider) { + console.log("the provider is an instance of AuthorizationProvider"); + } +} catch (err) { + console.error("catch error: " + JSON.stringify(err)); +} +``` + +## AccountCapabilityScheduler10+ + +帐号能力调度器类。 + +### executeRequest10+ + +executeRequest(request: AccountCapabilityRequest, callback: AsyncCallback<AccountCapabilityResponse, { [key: string]: object }>): void + +执行帐号能力请求。使用callback异步回调。 + +**系统能力:** SystemCapability.Account.AppAccount + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ---------- | ------------------------- | ---- | ------------------------- | +| request | [AccountCapabilityRequest](#accountcapabilityrequest10) | 是 | 表示帐号能力请求。 | +| callback | AsyncCallback<[AccountCapabilityResponse](#accountcapabilityresponse10), { [key: string]: object }> | 是 | 表示请求的回调方法。当执行成功时,err为null;否则为错误对象。 | + +**错误码:** + +| 错误码ID | 错误信息 | +| ------- | ------- | +| 12300001 | System service exception. | +| 12300002 | Invalid request. | + +**示例:** + +```ts +let scheduler = new account_appAccount.AccountCapabilityScheduler(); +let provider = new account_appAccount.AuthorizationProvider({ bundleName: 'xxx', abilityName: 'xxx' }); +let request = new account_appAccount.AccountCapabilityRequest(provider); +try { + scheduler.executeRequest(request, (err, response) => { + if (err != null) { + console.log('executeRequest failed, error: ' + JSON.stringify(err)); + } else { + console.log('executeRequest response: ' + JSON.stringify(response)); + } + }); +} catch (err) { + console.log('executeRequest exception: ' + JSON.stringify(err)); +} +``` + +### executeRequest10+ + +executeRequest(request: AccountCapabilityRequest): Promise<AccountCapabilityResponse> + +执行帐号能力请求。使用Promise异步回调。 + +**系统能力:** SystemCapability.Account.AppAccount + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ---------- | ------- | ---- | ------------ | +| request | [AccountCapabilityRequest](#accountcapabilityrequest10) | 是 | 表示帐号能力请求。 | + +**返回值:** + +| 类型 | 说明 | +| ------------------- | --------------------- | +| Promise<[AccountCapabilityResponse](#accountcapabilityresponse10)> | Promise对象,返回请求执行的响应结果。 | + +**错误码:** + +| 错误码ID | 错误信息 | +| ------- | ------- | +| 12300001 | System service exception. | +| 12300002 | Invalid request. | + +**示例:** + +```ts +let scheduler = new account_appAccount.AccountCapabilityScheduler(); +let provider = new account_appAccount.AuthorizationProvider({ bundleName: 'xxx', abilityName: 'xxx' }); +let request = new account_appAccount.AccountCapabilityRequest(provider); +try { + scheduler.executeRequest(request).then((response) => { + console.log('executeRequest response: ' + JSON.stringify(response)); + }).catch((err) => { + console.log('executeRequest failed, error: ' + JSON.stringify(err)); + }); +} catch (err) { + console.log('executeRequest exception: ' + JSON.stringify(err)); +} +``` \ No newline at end of file