currentUser

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

获取 currentUser 对象

Auth.currentUser()

示例代码

  1. try {
  2. // 同步的方式
  3. // 当前登录用户的信息;它会执行一次网络请求,获取到的用户信息总是最新的
  4. // 当未登录时,返回 null
  5. CurrentUser curUser = Auth.currentUser();
  6. // 异步的方式
  7. Auth.currentUserInBackground(new Callback<CurrentUser>() {
  8. @Override
  9. public void onSuccess(@Nullable CurrentUser currentUser) {
  10. //...
  11. }
  12. @Override
  13. public void onFailure(Exception e) {
  14. //...
  15. }
  16. });
  17. } catch (Exception e) {
  18. Log.d(TAG, e.getMessage(), e);
  19. }

CurrentUser 对象说明

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

获取用户自定义字段

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

  • currentUser.getXXX(key)

currentUser.getXXX(key)

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

示例代码

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

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

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

判断用户是否是临时用户

  1. Auth.isAnonymous();

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

  1. 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 手机号

示例代码

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

异常

异常请参考异常

验证手机号

info 匿名用户无法调用

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

currentUser.smsPhoneVerification(smsCode)

参数说明

名称 类型 必填 说明
smsCode String Y 短信验证码

示例代码

  1. try {
  2. Auth.currentUser().smsPhoneVerification("123456");
  3. // 验证成功
  4. } catch (Exception e) {
  5. // 验证失败
  6. }

异常

异常请参考异常

更新用户自定义字段

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

邮箱验证

CurrentUser.emailVerify()

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

示例代码

  1. try {
  2. Auth.currentUser().emailVerify();
  3. // 操作成功
  4. } catch (Exception e) {
  5. Log.d(TAG, e.getMessage(), e);
  6. // 操作失败
  7. }

异常

异常请参考异常