当前用户

开发者可以调用 Auth.currentUser() 获取 CurrentUser 对象,通过该对象进而对当前用户进行管理

获取 currentUser 对象

Auth.currentUser()

示例代码

try {
  // 同步的方式
  // 当前登录用户的信息;它会执行一次网络请求,获取到的用户信息总是最新的
  // 当未登录时,返回 null
  CurrentUser curUser = Auth.currentUser();

  // 异步的方式
  Auth.currentUserInBackground(new Callback<CurrentUser>() {
     @Override
     public void onSuccess(@Nullable CurrentUser currentUser) {
         //...
     }
     @Override
     public void onFailure(Exception e) {
         //...
     }
 });
} catch (Exception e) {
  Log.d(TAG, e.getMessage(), e);
}

CurrentUser 对象说明

CurrentUser 代表了当前登录的用户,开发者可以通过获取当前用户的信息,执行一些当前登录用户才能执行的动作 CurrentUserUser 的子类,所以该对象包含了 _userprofile 表所有的字段。

获取用户自定义字段

开发者可能会在 _userprofile 表中定义一些自定义字段,要拿到这些自定义字段信息,可以通过如下 API 来获取:

  • currentUser.getXXX(key)

currentUser.getXXX(key)

通过 currentUser.getXXX(key) 可以获取用户的单个字段(包括内置字段和自定义字段)。

示例代码

假设开发者在 _userprofile 表中定义了 custom_name 列,并设置当前用户的 custom_nameifanrx。则在 SDK 中查询当前用户自定义字段代码如下:

try {
  String customName = Auth.currentUser().getString("custom_name");
} catch (Exception e) {
  Log.d(TAG, e.getMessage(), e);
}

字段说明请参考 获取用户信息小节

判断用户是否是临时用户

Auth.isAnonymous();

获取当前用户登录 session 的过期时间(单位毫秒)

CurrentUser.getExpiresAt();

设置用户信息

CurrentUser 提供了一些方法,用于修改当前用户信息。

常见使用场景:

  • 用户的用户名/邮箱设置有误,需要修改为新的用户名/邮箱。

  • 用户使用小程序授权登录后,通过设置用户名或邮箱,以便下次通过用户名或邮箱登录。

设置用户名、邮箱和手机号,更新密码

info 匿名用户无法调用

用户名不区分大小写。当用户设置了 username 为 ifanrx 的账号后,其他人不能再注册诸如 Ifanrx、IfAnrx、IFANRX 等账号了

邮箱中的英文字母会被强制转换为小写。例如 iFanrX@Hello.com 会被转换成 ifanrx@hello.com

重新设置手机号后,需要重新验证手机号。

currentUser.updateUser(request)

参数说明

名称类型说明

username

String

用户名 (不区分大小写)

email

String

户邮箱 (不区分大小写)

password

String

用户密码 (若有提交 new_password 则为必填)

newPassword

String

新用户密码

phone

String

手机号

示例代码

try {
  UpdateUserReq request = new UpdateUserReq();
  // 用户名、email、手机号和密码可以单独更新,可以两两更新,可以所有字段一起更新
  request.setUsername("new user name");
  request.setEmail("new email");
  request.setPassword("xxxxxx");
  request.setNewPassword("xxxxxx");
  request.setPhone("15023779345");
  Auth.currentUser().updateUser(request);
  // 操作成功
} catch (Exception e) {
  Log.d(TAG, e.getMessage(), e);
  // 操作失败
}

异常

异常请参考异常

验证手机号

info 匿名用户无法调用

短信验证码 smsCode 通过接口 BaaS.sendSmsCode(String) 获取,请查看文档

currentUser.smsPhoneVerification(smsCode)

参数说明

名称类型必填说明

smsCode

String

Y

短信验证码

示例代码

try {
  Auth.currentUser().smsPhoneVerification("123456");
  // 验证成功
} catch (Exception e) {
  // 验证失败
}

异常

异常请参考异常

更新用户自定义字段

更新用户信息与数据表更新数据项方法基本一致。这里只允许更新 _userprofile 表中自定义的字段。

邮箱验证

CurrentUser.emailVerify()

当用户通过邮箱注册后或者修改了邮箱后,开发者可能希望对用户填写的邮箱真实性进行校验, 调用该 API 后,知晓云会向当前用户发送一封验证邮件,用户可以打开邮件并进行验证操作。

示例代码

try {
  Auth.currentUser().emailVerify();
  // 操作成功
} catch (Exception e) {
  Log.d(TAG, e.getMessage(), e);
  // 操作失败
}

异常

异常请参考异常

Last updated