更新时间:2024-06-26 01:57:27下载pdf
名词 | 说明 |
---|---|
商户 | 商户实体信息,主要关联一些商户信息,包括商户名和营业执照等 |
主账号 | SaaS 体系主账号,等同于开发者账号 |
子账号 | SaaS 体系子账号,会关联一个主账号 |
通过 ThingOSUser.getUserInstance()
,获取对应 IThingUser
操作类。
账号分为主账号和子账号,均可使用该密码登录功能。如果为预登录(当返回多个商户信息时),需要选择商户,并将选择的商户 Code 填入登录入参,重新进行密码登录。
接口说明
账号密码登录。
void loginWithPassword(ThingUserLoginWithPwdReqBean request, IThingUserLoginCallback<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();
ThingUserLoginWithPwdReqBean reqBean = new ThingUserLoginWithPwdReqBean();
reqBean.setPassword(password);
reqBean.setUsername(username);
reqBean.setCountryCode("86");
reqBean.setMerchantCode(merchantCode);
ThingOSUser.getUserInstance().loginWithPassword(reqBean, new IThingUserLoginCallback<User>() {
@Override
public void onPreLogin(List<ThingMerchantBean> merchantBeanList) {
StringBuilder sb = new StringBuilder();
for (ThingMerchantBean 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(ThingUserSendCodeReqBean request, IResultCallback callback)
参数说明
参数 | 说明 |
---|---|
countryCode | 国家区号,例如 86 |
username | 手机号码 | 邮箱 |
codeType | 获取验证码类型,登录类型传 0 |
接口说明
验证码登录。
void loginWithVerifyCode(ThingUserLoginWithCodeReqBean request, IThingUserLoginCallback<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();
ThingUserLoginWithCodeReqBean reqBean = new ThingUserLoginWithCodeReqBean();
reqBean.setCode(code);
reqBean.setUsername(username);
reqBean.setCountryCode("86");
reqBean.setMerchantCode(merchantCode);
ThingOSUser.getUserInstance().loginWithVerifyCode(reqBean, new IThingUserLoginCallback<User>() {
@Override
public void onPreLogin(List<ThingMerchantBean> merchantBeanList) {
StringBuilder sb = new StringBuilder();
for (ThingMerchantBean 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);
}
});
}
授权流程
三方系统服务端授权账户到涂鸦开发者平台,由三方系统决定授权账户的范围,可以是三方系统的用户或员工账号,也可以是内部任何业务形态对应一个账号授权到涂鸦开发者平台。例如,企业、门店和项目等。
已经授权的账户,三方系统服务端通过账户加国家码,向涂鸦开发者平台申请一个 Ticket。
使用场景
lighting.console.tuyacn.com?ticket=xxx
。例如,访问涂鸦的系统网站,或扫码访问设备控制 H5 页面。接口说明
三方系统授权登录。
void loginByTicket(String ticket, IThingUserResultCallback<User> listener);
参数说明
参数 | 说明 |
---|---|
ticket | 通过授权流程获取 Ticket |
示例代码
ThingOSUser.getUserInstance().loginByTicket(content, new IThingUserResultCallback<User>(){
@Override
public void onSuccess(User user) {
Log.e(TAG,"登录成功")
}
@Override
public void onError(String code, String error) {
Log.e(TAG,"登录失败:" + error)
}
});
用户登录前修改密码,分为三个步骤:
接口说明
获取验证码。
void getValidateCode(ThingUserSendCodeReqBean request, IResultCallback callback)
参数说明
参数 | 说明 |
---|---|
countryCode | 国家区号,例如 86 |
username | 手机号码 | 邮箱 |
codeType | 获取验证码类型,类型传 2 |
接口说明
查找商户列表。
void loginWithVerifyCode(ThingUserLoginWithCodeReqBean request, IThingUserLoginCallback<User> callback);
参数说明
参数 | 说明 |
---|---|
countryCode | 国家区号,例如 86 |
username | 手机号码 | 邮箱 |
code | 验证码 |
接口说明
找回密码。
void findPassword(ThingUserFindPwdReqBean request, IThingUserFindPasswordCallback 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();
ThingUserSendCodeReqBean reqBean = new ThingUserSendCodeReqBean();
reqBean.setCountryCode("86");
reqBean.setUsername(username);
reqBean.setCodeType(codeType);
reqBean.setMerchantCode(merchantCode);
ThingOSUser.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();
ThingUserQueryMerchantWithCodeReqBean reqBean = new ThingUserQueryMerchantWithCodeReqBean();
reqBean.setCode(code);
reqBean.setCountryCode("86");
reqBean.setUsername(username);
ThingOSUser.getUserInstance().queryMerchantList(reqBean, new IThingUserResultCallback<List<ThingMerchantBean>>() {
@Override
public void onSuccess(List<ThingMerchantBean> 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();
ThingUserFindPwdReqBean reqBean = new ThingUserFindPwdReqBean();
reqBean.setUsername(username);
reqBean.setNewPassword(password);
reqBean.setCode(code);
reqBean.setCountryCode("86");
reqBean.setMerchantCode(merchantCode);
ThingOSUser.getUserInstance().findPassword(reqBean, new IResultCallback() {
@Override
public void onError(String code, String error) {
toast(error);
}
@Override
public void onSuccess() {
toast("findPassword success");
}
});
}
用户登录后修改密码,可以直接通过传递旧密码和新密码来修改密码。
接口说明
修改密码。
void modifyPassword(ThingUserModifyPwdReqBean request, IResultCallback callback);
参数 | 描述 |
---|---|
oldPassword | 旧密码 |
newPassword | 新密码 |
示例代码
public void modifyPwd(View view) {
String oldPwd = etPwd.getText().toString();
String newPwd = etNewPwd.getText().toString();
ThingUserModifyPwdReqBean reqBean = new ThingUserModifyPwdReqBean();
reqBean.setOldPassword(oldPwd);
reqBean.setNewPassword(newPwd);
ThingOSUser.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 | 回调 |
示例代码
ThingOSUser.getUserInstance().updateUserInfo(new IResultCallback() {
@Override
public void onError(String code, String error) {
}
@Override
public void onSuccess() {
User user = ThingOSUser.getUserInstance().getUser();
}
});
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈