密码管理

更新时间:2024-11-22 02:19:30下载pdf

本文介绍如何管理密码。

获取已创建的密码列表

接口说明

ILockPasswordManager # void getPasswordList(PasswordListParams params, IThingResultCallback<PasswordListResp> callback);

参数说明

参数 说明
params 获取密码列表参数 Bean
params.groupId 当前设备所在站点的 ID
params.deviceId 设备 ID
params.periodType 检索条件,默认传空
pageNo 当前请求的页数
pageSize 每页请求的数量
callback 结果回调

示例代码

ThingOSLock.getPasswordManager().getPasswordList(params, new IThingResultCallback<PasswordListResp>() {
    @Override
    public void onSuccess(PasswordListResp result) {
        // Got password list successfully
    }

    @Override
    public void onError(String errorCode, String errorMessage) {
        // Failed to get password list
    }
});

获取密码详情

接口说明

ILockPassword # void getPasswordDetail(IThingResultCallback<PasswordBean> callback);

参数说明

参数 说明
callback 结果回调

示例代码

ThingOSLock.newPasswordInstance(siteId, deviceId, passwordId).getPasswordDetail(new IThingResultCallback<PasswordBean>() {
    @Override
    public void onSuccess(PasswordBean result) {
        //Got password details successfully
    }

    @Override
    public void onError(String errorCode, String errorMessage) {
        //Failed to get password details
    }
});

创建单次离线密码

接口说明

ILockPasswordManager # void createOncePassword(OncePasswordCreateParams params, IThingResultCallback<PasswordResp> callback);

参数说明

参数 说明
params 创建单次离线密码参数 Bean
params.groupId 当前设备所在站点的 ID
params.deviceId 门锁设备 ID
params.passwordName 密码用户名
callback 结果回调

示例代码

OncePasswordCreateParams oncePasswordCreateParams = new OncePasswordCreateParams();
oncePasswordCreateParams.passwordName = "once password name";
oncePasswordCreateParams.groupId = siteId;
oncePasswordCreateParams.deviceId = deviceId;

ThingOSLock.getPasswordManager().createOncePassword(oncePasswordCreateParams, new IThingResultCallback<PasswordResp>() {
    @Override
    public void onSuccess(PasswordResp result) {
        //Created one-time offline password successfully
    }

    @Override
    public void onError(String errorCode, String errorMessage) {
       //Failed to create one-time offline password 
    }
});

创建永久在线密码

接口说明

ILockPasswordManager # void createPermanentPassword(long siteId, String lockDevId, String password, String name, IThingResultCallback<PasswordResp> callback);

参数说明

参数 说明
siteId 门锁设备所在站点的 ID
lockDevId 门锁设备 ID
password 密码
name 密码用户名
callback 结果回调

示例代码

 ThingOSLock.getPasswordManager().createPermanentPassword(siteId, deviceId, "123456", "Test Password", new IThingResultCallback<PasswordResp>() {
    @Override
    public void onSuccess(PasswordResp result) {
        //Create permanent password successfully
    }

    @Override
    public void onError(String errorCode, String errorMessage) {
        //Failed to create permanent password
    }
});
  • 创建永久在线密码时,必须确保设备处于在线状态。
  • 网关下的门锁设备在创建密码时会采用异步创建的方式,密码最终创建的结果需通过 PasswordBean 对象的 keyStatus 进行状态判断。如果遇到创建状态值为 CREATE_FAIL 时,可通过 retryCreateOnlinePassword 方法进行补偿创建。

创建限时离线密码

接口说明

ILockPasswordManager # void createOfflinePassword(OfflinePasswordCreateParams params, IThingResultCallback<PasswordResp> callback);

参数说明

参数 说明
params 创建限时离线密码参数 Bean
params.groupId 门锁设备所在站点的 ID
params.deviceId 门锁设备 ID
params.passwordName 密码用户名
passwordType 密码类型,固定传入 PasswordType.TIME_LIMIT_OFFLINE
params.effectiveTime 密码生效开始时间戳,单位为毫秒
params.invalidTime 密码失效时间戳,单位为毫秒
params.timeZoneId 时区,可不传(SDK 内部会进行赋值)
callback 结果回调

示例代码

OfflinePasswordCreateParams params = new OfflinePasswordCreateParams();
params.groupId = siteId;
params.deviceId = deviceId;
params.passwordName = "Password Name";
params.effectiveTime = effectiveTime;
params.invalidTime = invalidTime;
params.passwordType = PasswordType.TIME_LIMIT_OFFLINE;
params.timeZoneId = ThingOSUser.getUserInstance().getUser().getTimezoneId();

ThingOSLock.getPasswordManager().createOfflinePassword(params, new IThingResultCallback<PasswordResp>() {
    @Override
    public void onSuccess(PasswordResp result) {
        //Created time-limited offline passwordd successfully
    }

    @Override
    public void onError(String errorCode, String errorMessage) {
        //Failed to create time-limited offline password
    }
});

创建限时在线密码

接口说明

ILockPasswordManager # void createLimitOnlinePassword(long siteId, String lockDevId, String password, String name, long effectiveTime, long invalidTime,
                                   String workingDay, String startMinuteFormat, String endMinuteFormat, IThingResultCallback<PasswordResp> callback);

参数说明

参数 说明
siteId 门锁设备所在站点的 ID
lockDevId 门锁设备ID
password 密码
name 密码名称
effectiveTime 密码生效开始时间戳,单位为毫秒
invalidTime 密码失效时间戳,单位为毫秒
workingDay 循环周期,是一个长度为 7 的只包含 01 的字符串。
0 表示当天不参与循环,1 表示当天参与循环。
字符串中从 1 位到 7 位分别对应从周日到周六
startMinuteFormat 电子钥匙生效时间段,是一个格式为 hh:mm 的字符串,例如 03:30,表示从 3 点 30 分开始生效
endMinuteFormat 电子钥匙失效时间段,是一个格式为 hh:mm 的字符串,例如 18:30,表示到 18 点 30 分后失效
callback 结果回调

示例代码

ThingOSLock.getPasswordManager().createLimitOnlinePassword(siteId,lockDevId,"123456", "Password Name",
effectiveTime, invalidTime, getWorkingDay(),
"03:30",
"19:50", new IThingResultCallback<PasswordResp>() {
    @Override
    public void onSuccess(PasswordResp result) {
        //Create time-limited online password successfully
    }

    @Override
    public void onError(String errorCode, String errorMessage) {
        //Failed to create time-limited online password
    }
});
  • 创建限时在线密码时,必须确保设备处于在线状态。

  • 网关下的门锁设备在创建密码时会采用异步创建的方式,密码最终创建的结果需通过 PasswordBean 对象的 keyStatus 进行状态判断。如果遇到创建状态值为 CREATE_FAIL 时,可通过 retryCreateOnlinePassword 方法进行补偿创建。

删除单次离线密码

接口说明

ILockPasswordManager # void removeOnceOfflinePassword(long siteId,String deviceId, String passwordId, IThingResultCallback<Boolean> callback);

参数说明

参数 说明
siteId 门锁设备所在站点的 ID
deviceId 门锁设备 ID
passwordId 密码 ID
callback 结果回调

示例代码

ThingOSLock.getPasswordManager().removeOnceOfflinePassword(siteId, deviceId, passwordId, new IThingResultCallback<Boolean>() {
    @Override
    public void onSuccess(Boolean result) {
        //Removed one-time offline password successfully
    }

    @Override
    public void onError(String errorCode, String errorMessage) {
        //Failed to remove one-time offline password
    }
});

删除永久在线密码

接口说明

ILockDevice # void removeOnlinePassword(long siteId, String deviceId, String passwordId, String lockId, IThingResultCallback<Boolean> callback);

参数说明

参数 说明
siteId 门锁设备所在站点的 ID
deviceId 门锁设备 ID
passwordId 密码 ID
lockId 写入到门锁设备的虚拟 ID,从密码详情中获取
callback 结果回调

示例代码

ThingOSLock.getPasswordManager().removeLimitOfflinePassword(siteId, deviceId, passwordId, passwordBean.lockId, new IThingResultCallback<Boolean>() {
    @Override
    public void onSuccess(Boolean result) {
        //Removed permanent online password successfully
    }

    @Override
    public void onError(String errorCode, String errorMessage) {
        //Failed to remove permanent online password
    }
});

删除限时离线密码

接口说明

ILockPasswordManager # void removeLimitOfflinePassword(long siteId, String deviceId, String passwordId, IThingResultCallback<String> callback);

参数说明

参数 说明
siteId 门锁设备所在站点的站点 ID
deviceId 门锁设备 ID
passwordId 密码 ID
callback 结果回调。注意返回一个 String 类型的值,该返回值为清空码,用户需要在门锁设备上手动输入清空码才可将之前创建的限时离线密码清除,否则该限时离线密码将继续可用

示例代码

ThingOSLock.getPasswordManager().removeLimitOfflinePassword(siteId, deviceId, passwordId, new IThingResultCallback<String>() {
    @Override
    public void onSuccess(String result) {
        //Removed time-limited offline password successfully
        //A clearing code is returned. Enter the clearing code in lock device
    }

    @Override
    public void onError(String errorCode, String errorMessage) {
        //Failed to remove time-limited offline password
    }
});

删除限时在线密码

接口说明

ILockPasswordManager # void removeOnlinePassword(long siteId, String deviceId, String passwordId, String lockId, IThingResultCallback<Boolean> callback);

参数说明

参数 说明
siteId 门锁设备所在站点的 ID
deviceId 门锁设备 ID
passwordId 密码 ID
lockId 写入到门锁设备的虚拟 ID,从密码详情中获取
callback 结果回调

示例代码

ThingOSLock.getPasswordManager().removeOnlinePassword(siteId, deviceId, passwordId, passwordBean.lockId, new IThingResultCallback<Boolean>() {
    @Override
    public void onSuccess(Boolean result) {
        //Removed time-limited online password successfully
    }

    @Override
    public void onError(String errorCode, String errorMessage) {
        //Failed to remove time-limited online password
    }
});

修改密码名称

接口说明

ILockPassword # void modifyPassword(PasswordUpdateParams params, IThingResultCallback<Boolean> callback);

参数说明

参数 说明
params 修改密码名称参数 Bean
params.passwordId 密码 ID
params.passwordName 密码名称
params.deviceId 门锁设备 ID
params.groupId 站点 ID
callback 结果回调

示例代码

PasswordUpdateParams params = new PasswordUpdateParams();
params.deviceId = deviceId;
params.groupId = siteId;
params.passwordId = passwordId;
params.passwordName = "new name";
ThingOSLock.newPasswordInstance(siteId, deviceId, passwordId).modifyPassword(params, new IThingResultCallback<Boolean>() {
    @Override
    public void onSuccess(Boolean result) {
        //Modified password successfully
    }

    @Override
    public void onError(String errorCode, String errorMessage) {
        //Failed to modify password
    }
});

强制删除密码

接口说明

ILockPasswordManager # void forceRemoveOnlinePassword(long siteId, String lockDevId, String passwordId, IThingResultCallback<Boolean> callback);

参数说明

参数 说明
siteId 站点 ID
lockDevId 门锁设备 ID
passwordId 密码 ID
callback 结果回调

示例代码

ThingOSLock.getPasswordManager().forceRemoveOnlinePassword(siteId, deviceId, passwordId, new IThingResultCallback<Boolean>() {
      @Override
      public void onSuccess(Boolean result) {
        //force remove online password successfully
      }

      @Override
      public void onError(String errorCode, String errorMessage) {
        //force remove online password failed
      }
  });
  • 当已创建/存在的密码因状态异常等原因无法通过 removeOnlinePassword 正常移除时,可以通过该方法强制移除该密码。
  • 使用该方法进行密码移除时仅清除云端数据,不会与门锁设备进行交互。

清空在线密码

接口说明

ILockPasswordManager # void clearAllPassword(long siteId, String lockDevId, IThingResultCallback<Boolean> callback);

参数说明

参数 说明
siteId 站点 ID
lockDevId 门锁设备 ID
callback 结果回调

示例代码

ThingOSLock.getPasswordManager().clearAllPassword(siteId, deviceId, new IThingResultCallback<Boolean>() {
    @Override
    public void onSuccess(Boolean result) {
      //Clear online password succeed
    }

    @Override
    public void onError(String errorCode, String errorMessage) {
        //Clear online password failed
    }
});

  • 使用该方法清空门锁上已经录入的在线密码,包括永久密码和限时在线密码。
  • 限时离线密码和单次密码无法通过该方法清空。