Account Subsystem ChangeLog

cl.account_os_account.1 Change in Error Information Return Method of Account System APIs

Certain system APIs of the account subsystem use service logic return values to indicate error information, which does not comply with the API error code specifications of OpenHarmony. The following changes are made in API version 9 and later:

Asynchronous API: An error message is returned via AsyncCallback or the error object of Promise.

Synchronous API: An error message is returned via an exception.

Change Impacts

The application developed based on earlier versions needs to adapt the new APIs and their method for returning API error information. Otherwise, the original service logic will be affected.

Key API/Component Changes

Before change:

  • 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;

After change:

  • 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;

Adaptation Guide

The following uses setProperty as an example for asynchronous APIs:

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");
    }
});

The following uses registerInputer as an example for synchronous APIs:

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.2 ACTION Definition Change for the Application Account Authentication Service

Change Impacts

For the application developed based on an earlier version, you need to modify ACTION in the application configuration file (config.json for the FA model and module.json5 for the Stage model) to normally provide the application authentication service.

Key API/Component Changes

Involved constant:

@ohos.ability.wantConstant.ACTION_APP_ACCOUNT_AUTH

Before change:

ACTION_APP_ACCOUNT_AUTH = "account.appAccount.action.auth"

After change:

ACTION_APP_ACCOUNT_AUTH = "ohos.appAccount.action.auth"

Adaptation Guide

For a third-party application providing the account authentication service, adapt the changed application account authentication ACTION in the ServiceAbility configuration file (config.json for the FA module or module.json5 for the Stage module).

"abilities": [
    {
        "name": "ServiceAbility",
        "srcEntrance": "./ets/ServiceAbility/ServiceAbility.ts",
        ...
        "visible": true,
        "skills": {
            {
                "actions": [
                    "ohos.appAccount.action.auth"
                ]
            }
        }
    }]
}