跳到主要内容

帐号功能

更新时间:2026-10-28 15:18:58

帐号功能包括:用户登录、登出等功能。开发可先阅读用户账号开发指南

接口与类型定义详见sdk中dist目录下index.d.ts文件


/**
* 自建帐号OAuth2协议登录
* @param token - 自建帐号用户token
* @returns
* @public
*/
declare function loginByAuth2(authCode: string): Promise<IUserLoginResp>;

/**
* 帐号密码登录
* @param account - 帐号
* @param password - 密码
* @public
*/
declare function loginByPassword(account: string, password: string): Promise<IUserLoginResp>;

/**
* 用户token登录
* @param clientUniqueKey - 获取token用到的调用方自己定义能标识自己客户端的唯一字符
* @param jwtToken - 用户token
* @param userId - 用户ID 可选 不传会尝试从jwtToken中解uid字段
* @param tokenExpireTime - 失效时间,单位:毫秒 可选 不传会尝试从jwtToken中解exp字段
* @public
*/
declare function loginByToken(clientUniqueKey:string, jwtToken: string, userId?: number, tokenExpireTime?: number): void;

/**
* 验证码登录
* @param account - 帐号
* @param verifyCode - 验证码
* @public
*/
declare function loginByVerifyCode(account: string, verifyCode: string): Promise<IUserLoginResp>;


/**
* 退出登录
* @public
*/
declare function logout(): Promise<void>;

/**
* 设置用户token失效监听
* @param onTokenInvalidListener - 监听回调
* @public
*/
declare function setOnTokenInvalidListener(listener: OnTokenInvalidListener): void;


/**
* 发送验证码
* @param sendCodeReq - sendCodeReq
* @public
*/
declare function sendCode(sendCodeReq: SendCodeReq): Promise<void>;

/**
* 内置帐号注册
*
* @param userRegisterReq - [UserRegisterReq]
* @public
*/
declare function register(userRegisterReq: UserRegisterReq): Promise<void>;

/**
* 获取登录用户信息
* @public
*/
declare function getLoginUserInfo(): Promise<UserProfileRsp>;

/**
* 用户重置密码
*
* @param userResetPwdReq - [UserModifyPwdReq]
* @public
*/
declare function resetPassword(userResetPwdReq: UserResetPwdReq): Promise<UserResetPwdRsp>;

/**
* 用户登录后使用旧密码修改新密码
*
* @param oldPassword - 旧密码
* @param newPassword - 新密码
* @public
*/
declare function modifyPassword(oldPassword: string, newPassword: string): Promise<UserCommonRsp>;

/**
* 注销用户
*
* @param verifyCode - 验证码
* @public
*/
declare function userDelete(verifyCode: string): Promise<UserCommonRsp>;

/**
* 更新用户昵称
*
* @param nickname - 用户昵称
* @public
*/
declare function updateUserNickname(nickname: string): Promise<UserCommonRsp>;

export declare namespace RTCXAccount {
export {
loginByPassword,
loginByVerifyCode,
loginByAuth2,
loginByToken,
logout,
setOnTokenInvalidListener,
sendCode,
register,
getLoginUserInfo,
resetPassword,
modifyPassword,
userDelete,
updateUserNickname,
}
}

内置帐号​

发送验证码​

/**
* 发送验证码
* @param sendCodeReq - sendCodeReq
* @public
*/
declare function sendCode(sendCodeReq: SendCodeReq): Promise<void>;

示例

import { RTCXAccount,RTCXAccountTypes} from '@rtcx/websdk'

async function sendAccountVerifyCode(account: string) {
await checkInitSdk()
const params: RTCXAccountTypes.SendCodeReq = {
account: account,
verifyCodeType: RTCXAccountTypes.VerifyCodeTypeEnum.LOGIN,
}
return RTCXAccount.sendCode(params)
}

用户注册​

/**
* 内置帐号注册
*
* @param userRegisterReq - [UserRegisterReq]
* @public
*/
declare function register(userRegisterReq: UserRegisterReq): Promise<void>;

示例

import { RTCXAccount, RTCXAccountTypes} from '@rtcx/websdk'
async function handleRegister() {
if (!formRef.value) return

// 触发 Element Plus 表单校验
await formRef.value.validate(async (valid) => {
if (!valid) return

loading.value = true
try {
const isEmail = form.account.includes('@')
const params: RTCXAccountTypes.UserRegisterReq = {
account: form.account,
verifyCode: form.verifyCode,
password: form.password,
accountType: isEmail
? RTCXAccountTypes.AccountTypeEnum.EMAIL
:RTCXAccountTypes.AccountTypeEnum.MOBILE,
pwdType: isEmail
? RTCXAccountTypes.PasswordTypeEnum.EMAIL_CODE
:RTCXAccountTypes.PasswordTypeEnum.MOBILE_CODE,
}
await RTCXAccount.register(params)
ElMessage.success('注册成功,即将跳转登录')
router.push('/login')
} catch (e: any) {
ElMessage.error(e.message || '注册失败')
} finally {
loading.value = false
}
})
}

用户登录​

/**
* 帐号密码登录
* @param account - 帐号
* @param password - 密码
* @public
*/
declare function loginByPassword(account: string, password: string): Promise<IUserLoginResp>;

示例

import {
RTCXAccount,
} from '@rtcx/websdk'
const account = '帐号'
const password = '密码'
RTCXAccount.loginByPassword(account, password)

用户验证码登录​

需要先发送用户登录验证码

/**
* 验证码登录
* @param account - 帐号
* @param verifyCode - 验证码
* @public
*/
declare function loginByVerifyCode(account: string, verifyCode: string): Promise<IUserLoginResp>;

示例

import {
RTCXAccount,RTCXAccountTypes
} from '@rtcx/websdk'

async function loginByVerifyCode(account: string, code: string) {
console.info('loginByVerifyCode')
await checkInitSdk()
return RTCXAccount.loginByVerifyCode(account.trim(), code.trim())
}

用户Token登录​

当应用层已经从其它途径获取到用户登录token,可直接设置给SDK

/**
* 用户token登录
* @param clientUniqueKey - 获取token用到的调用方自己定义能标识自己客户端的唯一字符
* @param jwtToken - 用户token
* @param userId - 用户ID 可选 不传会尝试从jwtToken中解uid字段
* @param tokenExpireTime - 失效时间,单位:毫秒 可选 不传会尝试从jwtToken中解exp字段
* @public
*/
declare function loginByToken(clientUniqueKey: string, jwtToken: string, userId?: number, tokenExpireTime?: number): void;

示例

import {
RTCXAccount,
} from '@rtcx/websdk'
RTCXAccount.loginByToken(clientUniqueKey:string, jwtToken: string, userId?: number, tokenExpireTime?: number)

用户信息​

/**
* 获取登录用户信息
* @public
*/
declare function getLoginUserInfo(): Promise<UserProfileRsp>;

示例

import {
RTCXAccount,RTCXAccountTypes
} from '@rtcx/websdk'

const fetchUserInfo = async () => {
try {
const rsp = await RTCXAccount.getLoginUserInfo()
const userAccount = rsp.userAccountList[0]?.account ?? ''
userInfo.userAccount = userAccount
userInfo.loginName = rsp.loginName ?? userAccount
userInfo.avatarUrl = rsp.avatarUrl ?? ''
userInfo.userId = rsp.userId ?? 0
} catch (e) {
ElMessage.error('获取用户信息失败')
}
}

重置密码​

需要先发送重置密码验证码

/**
* 用户重置密码
*
* @param userResetPwdReq - [UserModifyPwdReq]
* @public
*/
declare function resetPassword(userResetPwdReq: UserResetPwdReq): Promise<UserResetPwdRsp>;

示例

import {
RTCXAccount,RTCXAccountTypes
} from '@rtcx/websdk'
async function handleReset() {
if (!formRef.value) return

// 触发 Element Plus 表单校验
await formRef.value.validate(async (valid) => {
if (!valid) return

loading.value = true
try {
const params: RTCXAccountTypes.UserResetPwdReq = {
account: form.account,
verifyCode: form.verifyCode,
password: form.newPassword,
}
await RTCXAccount.resetPassword(params)
ElMessage.success('密码重置成功,请重新登录')
router.push('/login')
} catch (e: any) {
ElMessage.error(e.message || '重置失败')
} finally {
loading.value = false
}
})
}

修改密码​

/**
* 用户登录后使用旧密码修改新密码
*
* @param oldPassword - 旧密码
* @param newPassword - 新密码
* @public
*/
declare function modifyPassword(oldPassword: string, newPassword: string): Promise<UserCommonRsp>;

示例

import {
RTCXAccount,
} from '@rtcx/websdk'

const submitModifyPwd = async (formEl: FormInstance | undefined) => {
if (!formEl) return
await formEl.validate(async (valid) => {
if (valid) {
try {
// 请根据实际的 UserModifyPwdReq 类型定义调整字段名
await RTCXAccount.modifyPassword(pwdFormData.oldPassword, pwdFormData.newPassword)

ElMessage.success('密码修改成功,请重新登录')
pwdFormData.oldPassword = ''
pwdFormData.newPassword = ''
pwdFormData.confirmPassword = ''

// 修改密码后通常需要重新登录
await RTCXAccount.logout()
router.replace('/login')
} catch (e: any) {
ElMessage.error(e.message || '密码修改失败')
}
}
})
}

用户注销​

需要先发送用户注销验证码

/**
* 注销用户
*
* @param verifyCode - 验证码
* @public
*/
declare function userDelete(verifyCode: string): Promise<UserCommonRsp>;

示例

import {
RTCXAccount,
} from '@rtcx/websdk'


const handleDeleteAccount = async () => {
if (!deleteVerifyCode.value) {
ElMessage.warning('请输入验证码')
return
}

try {
await ElMessageBox.confirm('注销账号后,所有数据将被清空且无法恢复,确定要注销吗?', '警告', {
confirmButtonText: '确定注销',
cancelButtonText: '取消',
type: 'warning',
})

await RTCXAccount.userDelete(deleteVerifyCode.value)
ElMessage.success('账号已注销')

// 清理本地状态并跳转
sessionStorage.clear()
router.replace('/login')
} catch (e: any) {
if (e !== 'cancel') {
ElMessage.error(e.message || '注销失败')
}
}
}

修改用户昵称​

/**
* 更新用户昵称
*
* @param nickname - 用户昵称
* @public
*/
declare function updateUserNickname(nickname: string): Promise<UserCommonRsp>;

示例

import {
RTCXAccount, RTCXAccountTypes
} from '@rtcx/websdk'

const submitNickname = async () => {
if (!newNickname.value.trim()) {
ElMessage.warning('昵称不能为空')
return
}
try {
await RTCXAccount.updateUserNickname(newNickname.value)
userInfo.loginName = newNickname.value
editNicknameDialogVisible.value = false
ElMessage.success('昵称修改成功')
} catch (e: any) {
ElMessage.error(e.message || '昵称修改失败')
}
}

用户登出​

/**
* 退出登录
* @public
*/
declare function logout(): Promise<void>;

示例

import {
RTCXAccount,
} from '@rtcx/websdk'
RTCXAccount.logout()

登录失效监听​

/**
* 用户token失效监听
* @public
*/
declare type OnTokenInvalidListener = (err: RuntimeException) => void;

示例

import {
RTCXAccount,
RTCXAccountTypes
} from '@rtcx/websdk'
/**
* 用户token失效监听
* @public
*/
const onTokenInvalidListener: RTCXAccountTypes.OnTokenInvalidListener = (err: RuntimeException) => {};
RTCXAccount.setOnTokenInvalidListener(onTokenInvalidListener)

自有帐号体系​

用户登录​

/**
* 自建帐号OAuth2协议登录
* @param authCode - 自建帐号用户token
* @returns
* @public
*/
declare function loginByAuth2(authCode: string): Promise<IUserLoginResp>;

示例

import {
RTCXAccount,
} from '@rtcx/websdk'
const authCode = '授权code'
RTCXAccount.loginByAuth2(authCode)

登录失效监听​

同【内置帐号】的【登录失效监听】