简体中文
简体中文
English
联系我们
注册
登录

商户账号管理

更新时间:2022-02-17 06:11:39下载pdf

概念介绍

名词 说明
商户 商户实体信息,主要关联一些商户信息,包括商户名,营业执照等
主账号 SaaS体系主账号,等同于开发者账号
子账号 SaaS体系子账号,会关联一个主账号

可以通过TuyaOSUser.getUserInstance()获取对应ITuyaUser操作类。

账号密码登录

账号分为主账号和子账号,均可使用该密码登录功能

密码登录,如果为预登录(当返回多个商户信息时),需要进行商户选择后,将选择的商户Code填入登录入参,重新进行密码登录

接口说明

账号密码登录

void loginWithPassword(TuyaUserLoginWithPwdReqBean request, ITuyaUserLoginCallback<User> callback)

参数说明

参数 是否必填 描述
userName 必填 账号 | 邮箱
password 必填 密码
countryCode 必填 国家区号 如"86"
merchantCode 非必填 商户Code

代码范例

/**
 * 账号密码登录
 * @param view
 */
public void loginWithPwd(View view) {
    String username = etUsername.getText().toString();
    String merchantCode = etMerchant.getText().toString();
    String password = etPwd.getText().toString();
    TuyaUserLoginWithPwdReqBean reqBean = new TuyaUserLoginWithPwdReqBean();
    reqBean.setPassword(password);
    reqBean.setUsername(username);
    reqBean.setCountryCode("86");
    reqBean.setMerchantCode(merchantCode);

    TuyaOSUser.getUserInstance().loginWithPassword(reqBean, new ITuyaUserLoginCallback<User>() {
        @Override
        public void onPreLogin(List<TuyaMerchantBean> merchantBeanList) {
            StringBuilder sb = new StringBuilder();
            for (TuyaMerchantBean item : merchantBeanList) {
                sb.append(item.getMerchantCode())
                        .append(item.getMerchantName())
                        .append("\n");
            }
            toast("需要输入商户code");
            L.d(TAG, "get merchantList");
            L.d(TAG, sb.toString());
            if(null != merchantBeanList && !merchantBeanList.isEmpty()){
                String merchantCode = merchantBeanList.get(0).getMerchantCode();
                etMerchant.setText(merchantCode);
                toast("填充商户code");
            }
        }

        @Override
        public void onSuccess(User data) {
            toast("login success");
        }

        @Override
        public void onError(String errorCode, String errorMessage) {
            L.e(TAG, errorMessage);
            toast(errorMessage);
        }
    });
}

账号验证码登录

该功能分为两步,获取登录验证码,然后将验证码填入验证码登录入参,如果是预登录(有多商户)操作,则需要对应的商户Code传入重新获取验证码,将对应的验证码和商户Code传入进行登录

接口说明

获取登录验证码

void getValidateCode(TuyaUserSendCodeReqBean request, IResultCallback callback)

参数说明

参数 说明
countryCode 国家区号:如 “86”
username 手机号 | 邮箱
codeType 获取验证码类型, 登录类型传0

接口说明

验证码登录

void loginWithVerifyCode(TuyaUserLoginWithCodeReqBean request, ITuyaUserLoginCallback<User> callback)
参数 描述
userName 账号, 手机号 | 邮箱
code 验证码
countryCode 国家区号, 如 “86”
merchantCode 商户code, 非必填
/**
 * 账号验证码登录
 * @param view
 */
public void loginWithCode(View view) {
    String username = etUsername.getText().toString();
    String merchantCode = etMerchant.getText().toString();
    String code = etCode.getText().toString();
    TuyaUserLoginWithCodeReqBean reqBean = new TuyaUserLoginWithCodeReqBean();
    reqBean.setCode(code);
    reqBean.setUsername(username);
    reqBean.setCountryCode("86");
    reqBean.setMerchantCode(merchantCode);

    TuyaOSUser.getUserInstance().loginWithVerifyCode(reqBean, new ITuyaUserLoginCallback<User>() {
        @Override
        public void onPreLogin(List<TuyaMerchantBean> merchantBeanList) {
            StringBuilder sb = new StringBuilder();
            for (TuyaMerchantBean item : merchantBeanList) {
                sb.append(item.getMerchantCode())
                        .append(item.getMerchantName())
                        .append("\n");
            }
            toast("需要输入商户code");
            L.d(TAG, "get merchantList");
            L.d(TAG, sb.toString());
            if(null != merchantBeanList && !merchantBeanList.isEmpty()){
                String merchantCode = merchantBeanList.get(0).getMerchantCode();
                etMerchant.setText(merchantCode);
                toast("填充商户code");
            }
        }

        @Override
        public void onSuccess(User data) {
            toast("login success");
        }

        @Override
        public void onError(String errorCode, String errorMessage) {
            L.e(TAG, errorMessage);
            toast(errorMessage);
        }
    });
}

三方系统授权登录

授权流程

  1. 三方系统服务端授权账户到涂鸦云,由三方系统決定授权账户的范围,可以是三方系统的用户或员工账号,也可以是内部任何业务形态对应一个账号授权到涂鸦云。如:企业,门店,项目等。
  2. 已经授权的账户,三方系统服务端通用账户加国家码,向涂鸦云申请一个 ticket。

商户账号管理

使用场景

  1. 涂鸦的系统域名加上这个 ticket,可实现免登跳转。示例: lighting.console.tuyacn.com?ticket=xxx。比如:访问涂鸦的系统网站,或扫码访问设备控制h5页面。
  2. 涂鸦商照sdk获取会话接口,传入 ticket,获取会话状态,访问完整的sdk能力。

接口说明

三方系统授权登录

void loginByTicket(String ticket, ITuyaUserResultCallback<User> listener);

参数说明

参数 说明
ticket 通过授权流程获取ticket

示例代码

TuyaOSUser.getUserInstance().loginByTicket(content, new ITuyaUserResultCallback<User>(){
    @Override
    public void onSuccess(User user) {
        Log.e(TAG,"登录成功")
    }

    @Override
    public void onError(String code, String error) {
    	Log.e(TAG,"登录失败:" + error)
    }
});

登录即注册

主账号通过登录直接注册功能,分为两个步骤,首先获取登录即注册的验证码,然后进行登录即注册功能

接口说明

获取验证码

void getValidateCode(TuyaUserSendCodeReqBean request, IResultCallback callback)

参数说明

参数 说明
countryCode 国家区号:如 “86”
username 手机号 | 邮箱
codeType 获取验证码类型, 类型传3

接口说明

登录即注册

void loginOrRegister(TuyaUserLoginOrRegisterReqBean request, ITuyaUserResultCallback<User> callback);

参数说明

参数 描述
username 账号 手机号 | 邮箱
code 验证码
countryCode 国家区号 如"86"
industryType 行业类型
/**
 * 获取验证码
 * @param v
 */
public void getCode(View v){
  String username = etUsername.getText().toString();
  String merchantCode = etMerchant.getText().toString();
  TuyaUserSendCodeReqBean reqBean = new TuyaUserSendCodeReqBean();
  reqBean.setCountryCode("86");
  reqBean.setUsername(username);
  reqBean.setCodeType(codeType);
  reqBean.setMerchantCode(merchantCode);

  TuyaOSUser.getUserInstance().getValidateCode(reqBean, new IResultCallback() {
    @Override
    public void onError(String code, String error) {
      L.e(TAG, error);
      toast(error);
    }

    @Override
    public void onSuccess() {
      toast("getCode success");
    }
  });
}

/**
* 登录即注册
* */
public void loginOrRegister(View view) {
  String username = etUsername.getText().toString();
  String code = etCode.getText().toString();
  String countryCode = "86";
  String industryType = "security_az";

  TuyaUserLoginOrRegisterReqBean reqBean = new TuyaUserLoginOrRegisterReqBean();
  reqBean.setUsername(username);
  reqBean.setCode(code);
  reqBean.setCountryCode(countryCode);
  reqBean.setIndustryType(industryType);

  TuyaOSUser.getUserInstance().loginOrRegister(reqBean, new ITuyaUserResultCallback<User>() {
    @Override
    public void onSuccess(User data) {
      toast("login or register success");
    }

    @Override
    public void onError(String errorCode, String errorMessage) {
      toast(errorMessage);
    }
  });
}

找回或重置密码

用户登录前修改密码,分为三个步骤,首先获取找回密码的验证码,将验证码传入查找商户列表,获取对应单独商户执行找回密码的方法

接口说明

获取验证码

void getValidateCode(TuyaUserSendCodeReqBean request, IResultCallback callback)

参数说明

参数 说明
countryCode 国家区号:如 “86”
username 手机号 | 邮箱
codeType 获取验证码类型, 类型传2

接口说明

查找商户列表

void loginWithVerifyCode(TuyaUserLoginWithCodeReqBean request, ITuyaUserLoginCallback<User> callback);

参数说明

参数 说明
countryCode 国家区号:如 “86”
username 手机号 | 邮箱
code 验证码

接口说明

找回密码

void findPassword(TuyaUserFindPwdReqBean request, ITuyaUserFindPasswordCallback callback);
参数 描述
username 账号 手机号 | 邮箱
newPassword 新密码
code 验证码
countryCode 国家区号 如"86"
merchantCode 商户code
/**
 * 1.0 获取验证码
 * @param v
 */
public void getCode(View v){
  String username = etUsername.getText().toString();
  String merchantCode = etMerchant.getText().toString();
  TuyaUserSendCodeReqBean reqBean = new TuyaUserSendCodeReqBean();
  reqBean.setCountryCode("86");
  reqBean.setUsername(username);
  reqBean.setCodeType(codeType);
  reqBean.setMerchantCode(merchantCode);

  TuyaOSUser.getUserInstance().getValidateCode(reqBean, new IResultCallback() {
    @Override
    public void onError(String code, String error) {
      L.e(TAG, error);
      toast(error);
    }

    @Override
    public void onSuccess() {
      toast("getCode success");
    }
  });
}

/**
 * 2.0 查询商户列表
 * @param view
 */
public void queryMerchants(View view) {
  String username = etUsername.getText().toString();
  String code = etCode.getText().toString();

  TuyaUserQueryMerchantWithCodeReqBean reqBean = new TuyaUserQueryMerchantWithCodeReqBean();
  reqBean.setCode(code);
  reqBean.setCountryCode("86");
  reqBean.setUsername(username);
  TuyaOSUser.getUserInstance().queryMerchantList(reqBean, new ITuyaUserResultCallback<List<TuyaMerchantBean>>() {
    @Override
    public void onSuccess(List<TuyaMerchantBean> data) {
      if(null == data ){
        toast("商户列表为空");
        return;
      }
      int size = data.size();
      if(0 <= size){
        String merchantCode = data.get(0).getMerchantCode();
        etMerchant.setText(merchantCode);
        toast("queryMerchants success 填充第0个商户code");
      }
    }

    @Override
    public void onError(String errorCode, String errorMessage) {
      toast(errorMessage);
    }
  });
}

/**
 * 找回密码
 * @param view
 */
public void resetPwd(View view) {
  String username = etUsername.getText().toString();
  String merchantCode = etMerchant.getText().toString();
  String code = etCode.getText().toString();
  String password = etPwd.getText().toString();

  TuyaUserFindPwdReqBean reqBean = new TuyaUserFindPwdReqBean();
  reqBean.setUsername(username);
  reqBean.setNewPassword(password);
  reqBean.setCode(code);
  reqBean.setCountryCode("86");
  reqBean.setMerchantCode(merchantCode);

  TuyaOSUser.getUserInstance().findPassword(reqBean, new IResultCallback() {
    @Override
    public void onError(String code, String error) {
      toast(error);
    }

    @Override
    public void onSuccess() {
      toast("findPassword success");
    }
  });
}

修改密码

用户登录后修改密码,可以直接通过传递旧密码和新密码来修改密码

接口说明

修改密码

void modifyPassword(TuyaUserModifyPwdReqBean request, IResultCallback callback);
参数 描述
oldPassword 旧密码
newPassword 新密码

代码范例

public void modifyPwd(View view) {
  String oldPwd = etPwd.getText().toString();
  String newPwd = etNewPwd.getText().toString();
  TuyaUserModifyPwdReqBean reqBean = new TuyaUserModifyPwdReqBean();
  reqBean.setOldPassword(oldPwd);
  reqBean.setNewPassword(newPwd);

  TuyaOSUser.getUserInstance().modifyPassword(reqBean, new IResultCallback() {
    @Override
    public void onError(String code, String error) {
      toast(error);
      L.e(TAG, error);
    }

    @Override
    public void onSuccess() {
      toast("modify success");
    }
  });
}

账号登出

接口说明

账号登出

void logout(IResultCallback callback)

账号注销

接口说明

账号注销

void cancelAccount(IResultCallback callback)

用户信息

同步用户信息

当用户信息发生了变更,如修改了用户头像、昵称等,需要调用同步用户信息接口,保持用户信息是最新的状态。如果多台设备同时登录,一台设备修改了用户信息。另外一台设备也需要同步用户信息,可以在查看用户信息时调用同步接口,同步最新的用户信息。

接口说明

用于同步用户信息

void updateUserInfo(IResultCallback callback);

参数说明

参数 说明
callback 回调

示例代码

TuyaOSUser.getUserInstance().updateUserInfo(new IResultCallback() {
  @Override
  public void onError(String code, String error) {

  }

  @Override
  public void onSuccess() {
    User user = TuyaOSUser.getUserInstance().getUser();
  }
});

修改头像信息

接口说明

用于上传用户自定义的头像。

void uploadUserAvatar(File file, IResultCallback callback)

参数说明

参数 说明
file 用户头像图片文件
callback 回调

示例代码

TuyaOSUser.getUserInstance().uploadUserAvatar(file,
    new IResultCallback() {
        @Override
        public void onSuccess() {
        }

        @Override
        public void onError(String code, String error) {

        }
});

修改昵称

接口说明

修改昵称

void updateNickName(String name, final IResultCallback callback);

参数说明

参数 说明
name 昵称
callback 回调

示例代码

TuyaOSUser.getUserInstance().updateNickName(nickName,
    new IResultCallback() {
        @Override
        public void onSuccess() {
        }
        @Override
        public void onError(String code, String error) {

        }
});

更新用户时区

接口说明

用于更新用户时区。

void updateTimeZone(String timezoneId, IResultCallback callback);

参数说明

参数 说明
timezoneId 时区 id
callback 回调

示例代码

TuyaOSUser.getUserInstance().updateTimeZone(
    timezoneId,
    new IResultCallback() {
        @Override
        public void onSuccess() {
        }

        @Override
        public void onError(String code, String error) {

        }
});