Managing Distributed Accounts (for System Applications Only)
You can use the distributed account SDK to implement smooth switchover between a distributed account and a system account.
Before You Start
-
Request the ohos.permission.MANAGE_DISTRIBUTED_ACCOUNTS permission. For details, see Requesting Permissions for system_basic Applications.
-
Import the distributedAccount module.
import account_distributedAccount from '@ohos.account.distributedAccount';
-
Obtain a DistributedAccountAbility instance.
const distributedAccountAbility = account_distributedAccount.getDistributedAccountAbility();
Logging In to a Distributed Account from the Current System Account
Procedure
-
Specify the distributed account to be logged in. Set event to Ohos.account.event.LOGIN.
let distributedInfo: account_distributedAccount.DistributedInfo = { name: 'ZhangSan', id: '12345', event: 'Ohos.account.event.LOGIN', };
-
Use setOsAccountDistributedInfo to log in to the distributed account.
distributedAccountAbility.setOsAccountDistributedInfo(distributedInfo).then(() => { console.log('setOsAccountDistributedInfo successfully'); }).catch((err: BusinessError) => { console.log('setOsAccountDistributedInfo exception: ' + JSON.stringify(err)); });
-
After the login, use getOsAccountDistributedInfo to obtain information of the distributed account.
distributedAccountAbility.getOsAccountDistributedInfo().then((data: account_distributedAccount.DistributedInfo) => { console.log('distributed information: ' + JSON.stringify(data)); }).catch((err: BusinessError) => { console.log('getOsAccountDistributedInfo exception: ' + JSON.stringify(err)); });
Logging In to a Distributed Account from a System Account
Procedure
-
Specify the system account and the distributed account to be logged in. Set event to Ohos.account.event.LOGIN.
let localId: number = 100; let distributedInfo: account_distributedAccount.DistributedInfo = { name: 'ZhangSan', id: '12345', event: 'Ohos.account.event.LOGIN', };
-
Use setOsAccountDistributedInfoByLocalId log in to the distributed account from the system account.
distributedAccountAbility.setOsAccountDistributedInfoByLocalId(localId, distributedInfo).then(() => { console.log('setOsAccountDistributedInfoByLocalId successfully'); }).catch((err: BusinessError) => { console.log('setOsAccountDistributedInfoByLocalId exception: ' + JSON.stringify(err)); });
-
After the login, use getOsAccountDistributedInfo to obtain information of the distributed account.
distributedAccountAbility.getOsAccountDistributedInfoByLocalId(localId).then((data: account_distributedAccount.DistributedInfo) => { console.log('distributed information: ' + JSON.stringify(data)); }).catch((err: BusinessError) => { console.log('getOsAccountDistributedInfoByLocalId exception: ' + JSON.stringify(err)); });
Logging Out of a Distributed Account to the Current System Account
Procedure
-
Specify the distributed account to be logged out. Set event to Ohos.account.event.LOGOUT.
let distributedInfo: account_distributedAccount.DistributedInfo = { name: 'ZhangSan', id: '12345', event: 'Ohos.account.event.LOGOUT', };
-
Use setOsAccountDistributedInfo to log out of the specified distributed account.
distributedAccountAbility.setOsAccountDistributedInfo(distributedInfo).then(() => { console.log('setOsAccountDistributedInfo successfully'); }).catch((err: BusinessError) => { console.log('setOsAccountDistributedInfo exception: ' + JSON.stringify(err)); });
Logging Out of a Distributed Account to a System Account
Procedure
-
Specify the system account and the distributed account to be logged out. Set event to Ohos.account.event.LOGOUT.
let localId: number = 100; let distributedInfo: account_distributedAccount.DistributedInfo = { name: 'ZhangSan', id: '12345', event: 'Ohos.account.event.LOGOUT', };
-
Use setOsAccountDistributedInfoByLocalId to log out of the specified distributed account to the target system account.
distributedAccountAbility.setOsAccountDistributedInfoByLocalId(localId, distributedInfo).then(() => { console.log('setOsAccountDistributedInfoByLocalId successfully'); }).catch((err: BusinessError) => { console.log('setOsAccountDistributedInfoByLocalId exception: ' + JSON.stringify(err)); });