跳到主要内容

账号功能

更新时间:2026-04-03 11:20:37

账号和用户SDK提供了账号能力,包括注册、登录、登出等功能。建议在SDK初始化完成以后再调用账号功能接口,保证SDK初始化与登录时序性,否则会出现异常。

内置账号体系

内置账号为AIRTC平台提供的账号能力,包括验手机号注册、邮箱注册、验证码登录、自动登录、退出登录、发送验证码、重置密码、修改密码、注销。您在客户端集成后即可使用。

// 导入账号头文件
import 'package:airtc_engine/src/account/rtcx_open_account.dart';
  /// 通过手机验号、邮件 注册
Future<RTCXFluAccountResult> registerAccount(RTCXFluRegisterReq req);

/// 发送验证码
Future<RTCXFluAccountResult> sendValidateCode(RTCXFluSendValidateCodeReq req);

/// 通过账号密码、手机验证码、OAuthCode授权码(AuthCode登录推荐使用authCodeLoginAccountWithReq:接口) 登录
Future<RTCXFluAccountResult> loginAccount(RTCXFluLoginReq req);

/// 退出登录
Future<RTCXFluAccountResult> logout();

/// 通过OAuthCode授权码 登录
Future<RTCXFluAccountResult> authCodeLoginAccount(RTCXFluAuthCodeLoginReq req);

/// 自动登录
Future<RTCXFluAccountResult> autoLogin();

/// 重置密码
Future<RTCXFluAccountResult> resetPassword(RTCXFluResetPwdReq req);

/// 修改密码
Future<RTCXFluAccountResult> modifyPassword(RTCXFluModifyPwdReq req);

/// 用户注销 手机或邮箱收到的验证码 必选
Future<RTCXFluAccountResult> logoff(String verifyCode);

/// 是否登录
Future<RTCXFluAccountResult> isLogin();

/// 获取个人信息
Future<RTCXFluUserProfileModel> userProfile();

/// 更新用户名
Future<RTCXFluAccountResult> updateUserNickname(String name);

/// 更新头像
Future<RTCXFluAccountResult> updateUserHeadImg(Uint8List bitmap);

调用示例如下:

账号密码登录

    // 根据accountType传递的类型,确认登录的授权方式
final accountApi = RTCXFluAccountApi();
try {
final req = RTCXFluLoginReq(
accountType: 2,
account: "手机号",
country: "CN",
pwdType: 1,
password: "密码",
);
await accountApi.loginAccount(req);
setState(() {
_result = "登录成功";
});
} catch (e) {
Fluttertoast.showToast(msg: "登录失败" + e.toString());
}

自动登录

当调用登录接口完成登录以后,SDK会自动缓存登录用户信息,下次可以直接调用自动登录接口完成登录。

    accountApi.autoLogin().then((RTCXFluAccountResult value) {
print("autoLogin:${value.result}");
}).catchError((err) {
print("autoLogin err:" + err.toString());
});

发送验证码

当调用发生验证码时,验证码可用以完成注册、重置密码。

    final req = RTCXFluSendValidateCodeReq(account: phone, verifyCodeType: 3);
accountApi
.sendValidateCode(req)
.then((value) {
print("sendValidateCode result:${value.result}");
})
.catchError((err) {
print("sendValidateCode err:" + err.toString());
});

用户注册

    final req = RTCXFluRegisterReq(
accountType: 2,
verifyCode: code,
account: phone,
country: "CN",
pwdType: 3,
password: password,
);

accountApi
.registerAccount(req)
.then((value) {
print("registerAccount result:${value.result}");
})
.catchError((err) {
print("registerAccount err:" + err.toString());
});

重置密码

    final req = RTCXFluResetPwdReq(
verifyCode: code,
account: phone,
password: password,
);

accountApi
.resetPassword(req)
.then((value) {
print("resetPassword result:${value.result}");
})
.catchError((err) {
print("resetPassword err:" + err.toString());
});

修改密码

    try {
final req = RTCXFluModifyPwdReq(
oldPassword: oldPassword,
updatedPassword: newPassword,
);
final result = await accountApi.modifyPassword(req);
if (result.result) {
print("修改成功");
} else {
print("修改失败");
}
} catch (e) {
print("修改失败: ${e.toString()}");
} finally {
print("finally");
}

获取个人信息

    try {
final profile = await accountApi.userProfile();
} catch (e) {
print(" 获取个人信息 err:${e.toString()}");
} finally {
print("finally");
}

修改用户昵称

    try {
final result = await accountApi.updateUserNickname(nickname);
if (result.result) {
print("昵称修改成功");
} else {
print("修改失败");
}
} catch (e) {
print("修改失败: ${e.toString()}");
} finally {
print("finally");
}

修改头像

    Uint8List data = await getAssetAsUint8List(imagePath);

final result = await accountApi.updateUserHeadImg(data);
if (result.result) {
print("头像更换成功");
} else {
print("更换失败");
}

是否登录

    final result = await accountApi.isLogin();
if (result.result) {
print("已登录");
} else {
print("未登录");
}

退出登录

    final result = await accountApi.logout();
if (result.result) {
print("成功");
} else {
print("是失败");
}

自有账号体系

登录

通过 authCode 授权码登录。

    try {
final authCodeLoginReq = RTCXFluAuthCodeLoginReq(authCode: "authCode");
final result = await accountApi.authCodeLoginAccount(authCodeLoginReq);
if (result.result) {
print("登录成功");
} else {
print("登录失败");
}
} catch (e) {
print("登录失败: ${e.toString()}");
} finally {
print("finally");
}