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

  1. Request the ohos.permission.MANAGE_DISTRIBUTED_ACCOUNTS permission. For details, see Requesting Permissions for system_basic Applications.

  2. Import the distributedAccount module.

    import account_distributedAccount from '@ohos.account.distributedAccount';
    
  3. Obtain a DistributedAccountAbility instance.

    const distributedAccountAbility = account_distributedAccount.getDistributedAccountAbility();
    

Logging In to a Distributed Account from the Current System Account

Procedure

  1. 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',
    };
    
  2. 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));
    });
    
  3. 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

  1. 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',
    };
    
  2. 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));
    });
    
  3. 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

  1. 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',
    };
    
  2. 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

  1. 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',
    };
    
  2. 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));
    });