使用手机账号注册和登录安卓用户账号

更新时间:2023-05-31 10:15:34下载pdf

IoT App SDK 安卓版提供了手机号码和密码的注册和登录能力。

查询验证码服务可用地区

为了加强用户信息的数据安全,涂鸦优化了验证码发送流程,并添加了账号限制。只有验证码服务可用的地区,才可以发送验证码。

如果您想为 App 启用手机号码验证服务,那您需要开通和配置 手机号码短信验证服务。该服务让您的 App 用户可以通过手机号码直接注册账号或绑定已有的 App 账号,并可以直接通过手机号码完成登录 App、找回密码等操作。详细操作说明,请参考 开通和配置手机号码短信验证服务

接口说明

ThingHomeSdk.getUserInstance().getWhiteListWhoCanSendMobileCodeSuccess(IWhiteListCallback callback);

参数说明

参数 说明
callback 回调

示例代码

ThingHomeSdk.getUserInstance().getWhiteListWhoCanSendMobileCodeSuccess(new IWhiteListCallback() {
      @Override
      public void onSuccess(WhiteList whiteList) {
        Toast.makeText(mContext, "查询可用性成功:" + whiteList.getCountryCodes(), Toast.LENGTH_SHORT).show();
      }

      @Override
      public void onError(String code, String error) {
        Toast.makeText(mContext, "code: " + code + "error:" + error, Toast.LENGTH_SHORT).show();
      }
    });

发送手机号码验证码

接口说明

ThingHomeSdk.getUserInstance().sendVerifyCodeWithUserName(String userName, String region, String countryCode, int type, IResultCallback callback);

参数说明

参数 说明
userName 手机号码
region 区域,默认填写 "" 即可
countryCode 手机号码所在的国家区号,例如 86 表示中国大陆地区
type 发送验证码类型。取值:
  • 1:使用手机号码注册账号时,发送验证码
  • 2:使用手机号码登录账号时,发送验证码
  • 3:重置手机号码注册的账号的密码时,发送验证码
callback 回调

校验填入的验证码

本接口用于注册账号、登录账号、重设账号密码时验证码的校验。

接口说明

ThingHomeSdk.getUserInstance().checkCodeWithUserName(String userName, String region, String countryCode, String code, int type, IResultCallback callback)

参数说明

参数 说明
userName 用户名
region 区域,默认填写 "" 即可
countryCode 手机号码所在的国家区号,例如 86 表示中国大陆地区
code 验证码
type 校验类型。取值:
  • 1:使用手机号码注册账号时,校验验证码
  • 2:使用手机号码登录账号时,校验验证码
  • 3:重置手机号码注册的账号的密码时,校验验证码
  • 8:注销手机号码注册的账号时,校验验证码
callback 回调

使用手机号码注册账号

使用手机号码注册账号前,您需要先 获取验证码

接口说明

ThingHomeSdk.getUserInstance().registerAccountWithPhone(final String countryCode, final String phoneNumber, final String passwd, final String code, final IRegisterCallback callback);

参数说明

参数 说明
countryCode 手机号码所在的国家区号,例如 86 表示中国大陆地区
phoneNumber 电话号码
passwd 密码
code 验证码
callback 回调

示例代码

// 获取手机验证码
ThingHomeSdk.getUserInstance().sendVerifyCodeWithUserName("13666666666", "", "86", 1, new IResultCallback() {
      @Override
      public void onError(String code, String error) {
        Toast.makeText(mContext, "code: " + code + "error:" + error, Toast.LENGTH_SHORT).show();
      }

      @Override
      public void onSuccess() {
        Toast.makeText(mContext, "获取验证码成功", Toast.LENGTH_SHORT).show();
      }
    });
// 注册手机密码账户
ThingHomeSdk.getUserInstance().registerAccountWithPhone("86","13666666666","123456","124332", new IRegisterCallback() {
  @Override
  public void onSuccess(User user) {
    Toast.makeText(mContext, "注册成功", Toast.LENGTH_SHORT).show();
  }
  @Override
  public void onError(String code, String error) {
    Toast.makeText(mContext, "code: " + code + "error:" + error, Toast.LENGTH_SHORT).show();
  }
});

使用手机号码和密码登录账号

接口说明

ThingHomeSdk.getUserInstance().loginWithPhonePassword(String countryCode, String phone, String passwd, final ILoginCallback callback);

参数说明

参数 说明
countryCode 手机号码所在的国家区号,例如 86 表示中国大陆地区
phone 手机号码
passwd 登录密码
callback 回调

示例代码

//手机密码登录
ThingHomeSdk.getUserInstance().loginWithPhonePassword("86", "13666666666", "123456", new ILoginCallback() {
  @Override
  public void onSuccess(User user) {
    Toast.makeText(mContext, "登录成功,用户名:" +ThingHomeSdk.getUserInstance().getUser().getUsername(), Toast.LENGTH_SHORT).show();
  }

  @Override
  public void onError(String code, String error) {
    Toast.makeText(mContext, "code: " + code + "error:" + error, Toast.LENGTH_SHORT).show();
  }
});

使用手机号码和验证码登录账号

您需要先调用 验证码发送接口,发送验证码,再调用 验证码验证接口。将收到的验证码填入对应的参数中。

接口说明

ThingHomeSdk.getUserInstance().loginWithPhone(String countryCode, String phone, String code, final ILoginCallback callback)

参数说明

参数 说明
countryCode 手机号码所在的国家区号,例如 86 表示中国大陆地区
phone 电话号码
code 验证码
callback 回调

示例代码

//获取手机验证码
ThingHomeSdk.getUserInstance().sendVerifyCodeWithUserName("13666666666", "", "86", 2, new IResultCallback() {
      @Override
      public void onError(String code, String error) {
        Toast.makeText(mContext, "code: " + code + "error:" + error, Toast.LENGTH_SHORT).show();
      }

      @Override
      public void onSuccess() {
        Toast.makeText(mContext, "获取验证码成功", Toast.LENGTH_SHORT).show();
      }
    });
// 手机验证码登录
ThingHomeSdk.getUserInstance().loginWithPhone("86", "13355555555", "123456", new ILoginCallback() {
  @Override
  public void onSuccess(User user) {
    Toast.makeText(mContext, "登录成功,用户名:" +ThingHomeSdk.getUserInstance().getUser().getUsername(), Toast.LENGTH_SHORT).show();
  }
  @Override
  public void onError(String code, String error) {
    Toast.makeText(mContext, error, Toast.LENGTH_SHORT).show();
  }
});

重置手机号码注册的账号密码

接口说明

ThingHomeSdk.getUserInstance().resetPhonePassword(final String countryCode, final String phone, final String code, final String newPasswd, final IResetPasswordCallback callback);

参数说明

参数 说明
countryCode 手机号码所在的国家区号,例如 86 表示中国大陆地区
phone 手机号码
code 验证码
newPasswd 新密码
callback 回调

示例代码

// 手机获取验证码
ThingHomeSdk.getUserInstance().sendVerifyCodeWithUserName("13666666666", "", "86", 3, new IResultCallback() {
      @Override
      public void onError(String code, String error) {
        Toast.makeText(mContext, "code: " + code + "error:" + error, Toast.LENGTH_SHORT).show();
      }

      @Override
      public void onSuccess() {
        Toast.makeText(mContext, "获取验证码成功", Toast.LENGTH_SHORT).show();
      }
    });
// 重置手机密码
ThingHomeSdk.getUserInstance().resetPhonePassword("86", "13555555555", "123456", "123123", new IResetPasswordCallback(){
  @Override
  public void onSuccess() {
    Toast.makeText(mContext, "找回密码成功", Toast.LENGTH_SHORT).show();
  }

  @Override
  public void onError(String code, String error) {
    Toast.makeText(mContext, "code: " + code + "error:" + error, Toast.LENGTH_SHORT).show();
  }
});

为账号绑定邮箱地址

绑定邮箱,包括获取绑定验证码接口和绑定邮箱接口。

获取绑定验证码

接口说明

ThingHomeSdk.getUserInstance().sendBindVerifyCodeWithEmail(@NonNull String countryCode, @NonNull String email, @NonNull IResultCallback callback);

参数说明

参数 说明
countryCode 手机号码所在的国家区号,例如 86 表示中国大陆地区
email 邮箱地址
callback 回调

绑定邮箱地址

接口说明

ThingHomeSdk.getUserInstance().bindEmail(@NonNull String countryCode, @NonNull String email, @NonNull String code, @NonNull String sId, @NonNull IResultCallback callback);

参数说明

参数 说明
countryCode 手机号码所在的国家区号,例如 86 表示中国大陆地区
email 邮箱地址
code 验证码
sId 用户登录的会话(session)ID,您可以在 user 对象中获取 sessionID
callback 回调

示例代码

//获取绑定验证码
ThingHomeSdk.getUserInstance().sendBindVerifyCodeWithEmail("86", "123456@123.com", new IResultCallback() {
	@Override
    public void onError(String code, String error) {
    	// TODO
    }

    @Override
    public void onSuccess() {
		// TODO
    }
});
//绑定邮箱
ThingHomeSdk.getUserInstance().bindEmail("86", "123456@123.com", "123456", ThingHomeSdk.getUserInstance().getUser().getSid(), new IResultCallback() {
	@Override
	public void onError(String code, String error) {
		// TODO
	}

	@Override
	public void onSuccess() {
		// TODO
	}
});

重置密码后,如果有多个 App 都同时登录了这个账号,那么其他设备上的 App 会触发 Session 失效的回调。您需要自行实现回调后的动作,如跳转到登录页面等。详情请参考 Session 过期的处理