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 { distributedAccount, BusinessError } from '@kit.BasicServicesKit'; -
Obtain a DistributedAccountAbility instance.
const distributedAccountAbility = 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: 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: distributedAccount.DistributedInfo) => { console.log('distributed information: ' + JSON.stringify(data)); }).catch((err: BusinessError) => { console.log('getOsAccountDistributedInfo 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: 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 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: distributedAccount.DistributedInfo = { name: 'ZhangSan', id: '12345', event: 'Ohos.account.event.LOGIN', }; -
Call setOsAccountDistributedInfoByLocalId to bind the specified distributed account to the current 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 getOsAccountDistributedInfoByLocalId to obtain information of the distributed account.
distributedAccountAbility.getOsAccountDistributedInfoByLocalId(localId).then((data: 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 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: 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)); });