currentUser
开发者可以调用 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
代表了当前登录的用户,开发者可以通过获取当前用户的信息,执行一些当前登录用户才能执行的动作
CurrentUser
是 User
的子类,所以该对象包含了 _userprofile
表所有的字段。
获取用户自定义字段
开发者可能会在 _userprofile 表中定义一些自定义字段,要拿到这些自定义字段信息,可以通过如下 API 来获取:
currentUser.getXXX(key)
currentUser.getXXX(key)
通过 currentUser.getXXX(key)
可以获取用户的单个字段(包括内置字段和自定义字段)。
示例代码
假设开发者在 _userprofile 表中定义了 custom_name
列,并设置当前用户的 custom_name
为 ifanrx
。则在 SDK 中查询当前用户自定义字段代码如下:
try {
String customName = Auth.currentUser().getString("custom_name");
} catch (Exception e) {
Log.d(TAG, e.getMessage(), e);
}
字段说明请参考 获取用户信息小节
判断用户是否是临时用户
Auth.isAnonymous();
获取当前用户登录 session 的过期时间(单位毫秒)
CurrentUser.getExpiresAt();
设置用户信息
CurrentUser
提供了一些方法,用于修改当前用户信息。
常见使用场景:
- 用户的用户名/邮箱设置有误,需要修改为新的用户名/邮箱。
- 用户使用小程序授权登录后,通过设置用户名或邮箱,以便下次通过用户名或邮箱登录。
设置用户名、邮箱和手机号,更新密码
匿名用户无法调用
用户名不区分大小写。当用户设置了 username 为 ifanrx 的账号后,其他人不能再注册诸如 Ifanrx、IfAnrx、IFANRX 等账号了
邮箱中的英文字母会被强制转换为小写。例如 iFanrX@Hello.com 会被转换成 ifanrx@hello.com
重新设置手机号后,需要重新验证手机号。
currentUser.updateUser(request)
参数说明
名称 | 类型 | 说明 |
---|---|---|
username | String | 用户名 (不区分大小写) |
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);
// 操作失败
}
异常
异常请参考异常
验证手机号
匿名用户无法调用
短信验证码 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);
// 操作失败
}
异常
异常请参考异常