# 帐号子系统changeLog ## cl.account_os_account.1 变更错误码定义及其返回方式 针对帐号子系统API存在错误码定义不统一和抛出方式不符合OpenHarmony错误码规范的问题,从API9开始作以下变更: - 新增统一的错误码定义: [帐号公共错误码](../../../application-dev/reference/errorcodes/errorcode-account.md) - 按以下方式返回错误码: - 异步接口:错误信息通过AsyncCallback或Promise的error对象返回。其中,参数类型和数量错误信息,通过抛出异常的方式返回。 - 同步接口:错误信息通过抛出异常的方式返回。 **变更影响** 基于此前版本开发的应用,需适配变更后的新错误码和错误信息返回方式,否则会影响原有业务逻辑。 **关键接口/组件变更** 以下接口涉及新错误码和错误信息返回方式变更: - class AccountManager - activateOsAccount(localId: number, callback: AsyncCallback<void>): void; - removeOsAccount(localId: number, callback: AsyncCallback<void>): void; - setOsAccountConstraints(localId: number, constraints: Array<string>, enable: boolean, callback: AsyncCallback<void>): void; - setOsAccountName(localId: number, localName: string, callback: AsyncCallback<void>): void; - queryMaxOsAccountNumber(callback: AsyncCallback<number>): void; - queryAllCreatedOsAccounts(callback: AsyncCallback<Array<OsAccountInfo>>): void; - createOsAccount(localName: string, type: OsAccountType, callback: AsyncCallback<OsAccountInfo>): void; - createOsAccountForDomain(type: OsAccountType, domainInfo: DomainAccountInfo, callback: AsyncCallback<OsAccountInfo>): void; - queryOsAccountById(localId: number, callback: AsyncCallback<OsAccountInfo>): void; - getOsAccountProfilePhoto(localId: number, callback: AsyncCallback<string>): void; - setOsAccountProfilePhoto(localId: number, photo: string, callback: AsyncCallback<void>): void; - on(type: 'activate' | 'activating', name: string, callback: Callback<number>): void; - off(type: 'activate' | 'activating', name: string, callback?: Callback<number>): void; - isMainOsAccount(callback: AsyncCallback<boolean>): void; - queryOsAccountConstraintSourceTypes(localId: number, constraint: string, callback: AsyncCallback<Array<ConstraintSourceTypeInfo>>): void; - class UserAuth - constructor(); - getVersion(): number; - getAvailableStatus(authType: AuthType, authTrustLevel: AuthTrustLevel): number; - getProperty(request: GetPropertyRequest, callback: AsyncCallback<ExecutorProperty>): void; - setProperty(request: SetPropertyRequest, callback: AsyncCallback<number>): void; - auth(challenge: Uint8Array, authType: AuthType, authTrustLevel: AuthTrustLevel, callback: IUserAuthCallback): Uint8Array; - authUser(userId: number, challenge: Uint8Array, authType: AuthType, authTrustLevel: AuthTrustLevel, callback: IUserAuthCallback): Uint8Array; - cancelAuth(contextID: Uint8Array): number; - class PINAuth - constructor(); - registerInputer(inputer: IInputer): boolean; - unregisterInputer(authType: AuthType): void; - class UserIdentityManager - constructor(); - openSession(callback: AsyncCallback<Uint8Array>): void; - addCredential(credentialInfo: CredentialInfo, callback: IIdmCallback): void; - updateCredential(credentialInfo: CredentialInfo, callback: IIdmCallback): void; - closeSession(): void; - cancel(challenge: Uint8Array): number; - delUser(token: Uint8Array, callback: IIdmCallback): void; - delCred(credentialId: Uint8Array, token: Uint8Array, callback: IIdmCallback): void; - getAuthInfo(callback: AsyncCallback<Array<EnrolledCredInfo>>): void; - interface IInputData - onSetData: (authSubType: AuthSubType, data: Uint8Array) => void; **适配指导** 异步接口的错误信息处理逻辑以activateOsAccount为例,示例代码如下: ```ts import account_osAccount from "@ohos.account.osAccount" let accountMgr = account_osAccount.getAccountManager() let callbackFunc = (err) => { if (err != null) { // handle the bussiness error console.log("account_osAccount failed, error: " + JSON.stringify(err)); } else { console.log("account_osAccount successfully"); } } try { accountMgr.activateOsAccount("100", callbackFunc); } catch (err) { // handle the parameter type error console.log("account_osAccount failed for incorrect parameter type, error: " + JSON.stringify(err)); } try { accountMgr.activateOsAccount(); } catch (err) { // handle the parameter number error console.log("account_osAccount failed for incorrect parameter number, error: " + JSON.stringify(err)); } ``` 同步接口的错误信息处理以registerInputer为例,示例代码如下: ```ts import account_osAccount from "@ohos.account.osAccount" let pinAuth = new account_osAccount.PINAuth() try { pinAuth.registerInputer({}) } catch (err) { // handle the parameter type error console.log("account_osAccount failed for incorrect parameter type, error: " + JSON.stringify(err)); } try { pinAuth.registerInputer() } catch (err) { // handle the parameter number error console.log("account_osAccount failed for incorrect parameter number, error: " + JSON.stringify(err)); } ``` # 帐号子系统ChangeLog ## cl.account_os_account.2 帐号SystemAPI错误信息返回方式变更 已发布的部分帐号SystemAPI使用业务逻辑返回值表示错误信息,不符合OpenHarmony接口错误码规范。从API9开始作以下变更: 异步接口:通过AsyncCallback或Promise的error对象返回错误信息。 同步接口:通过抛出异常的方式返回错误信息。 **变更影响** 基于此前版本开发的应用,需适配变更接口的错误信息返回方式,否则会影响原有业务逻辑。 **关键接口/组件变更** 变更前: - class UserAuth - setProperty(request: SetPropertyRequest, callback: AsyncCallback<number>): void; - setProperty(request: SetPropertyRequest): Promise<number>; - cancelAuth(contextID: Uint8Array): number; - class PINAuth - registerInputer(inputer: Inputer): boolean; - UserIdentityManager - cancel(challenge: Uint8Array): number; 变更后: - class UserAuth - setProperty(request: SetPropertyRequest, callback: AsyncCallback<void>): void; - setProperty(request: SetPropertyRequest): Promise<void>; - cancelAuth(contextID: Uint8Array): void; - class PINAuth - registerInputer(inputer: Inputer): void; - UserIdentityManager - cancel(challenge: Uint8Array): void; **适配指导** 异步接口以setProperty为例,示例代码如下: ``` import account_osAccount from "@ohos.account.osAccount" userAuth.setProperty({ authType: account_osAccount.AuthType.PIN, key: account_osAccount.SetPropertyType.INIT_ALGORITHM, setInfo: new Uint8Array([0]) }, (err) => { if (err) { console.log("setProperty failed, error: " + JSON.stringify(err)); } else { console.log("setProperty successfully"); } }); userAuth.setProperty({ authType: account_osAccount.AuthType.PIN, key: account_osAccount.SetPropertyType.INIT_ALGORITHM, setInfo: new Uint8Array([0]) }).catch((err) => { if (err) { console.log("setProperty failed, error: " + JSON.stringify(err)); } else { console.log("setProperty successfully"); } }); ``` 同步接口以registerInputer为例,示例代码如下: ``` import account_osAccount from "@ohos.account.osAccount" let pinAuth = new account_osAccount.PINAuth() let inputer = { onGetData: (authType, passwordRecipient) => { let password = new Uint8Array([0]); passwordRecipient.onSetData(authType, password); } } try { pinAuth.registerInputer(inputer); } catch (err) { console.log("registerInputer failed, error: " + JSON.stringify(err)); } ``` ## cl.account_os_account.3 应用帐号鉴权服务ACTION定义变更 **变更影响** 基于此前版本开发的应用,需适配修改应用配置文件(FA模型为config.json或Stage模型为module.json5)中的ACTION才能正常对外提供应用鉴权服务。 **关键接口/组件变更** 涉及的常量: @ohos.ability.wantConstant.ACTION_APP_ACCOUNT_AUTH 变更前: ACTION_APP_ACCOUNT_AUTH = "account.appAccount.action.auth" 变更后: ACTION_APP_ACCOUNT_AUTH = "ohos.appAccount.action.auth" **适配指导** 提供应用帐号鉴权服务的三方应用,需要在相关ServiceAbility的配置文件(FA模型为config.json或Stage模型为module.json5)中适配变更后的应用帐号认证ACTION,示例如下: ``` "abilities": [ { "name": "ServiceAbility", "srcEnty": "./ets/ServiceAbility/ServiceAbility.ts", ... "visible": true, "skills": { { "actions": [ "ohos.appAccount.action.auth" ] } } }] } ```