LFUser
全局变量:LFUser · 启用方式:// @require user
读取插件登录状态与当前登录用户信息。优先读缓存,必要时才发起一次后台请求。所有执行环境均可用:已启用/已安装应用(含后台应用)、liveDebug、run --tab(MAIN world 脚本由编辑器自动安装的 ISOLATED 世界中继桥转发请求)、run --target background,以及不带 --tab 的 run。
方法
LFUser.isLoggedIn(options?): Promise<boolean>插件当前是否已登录({ force: true } 强制刷新)
LFUser.getUserInfo(options?): Promise<UserInfo | null>当前用户的 userInfo(昵称、账号等),未登录时为 null
LFUser.getContext(options?): Promise<UserContext>登录态 + userInfo 的组合上下文
LFUser.refresh(): Promise<UserContext>强制刷新并返回最新上下文
参数与返回值
isLoggedIn / getUserInfo / getContext 都接受可选的 { force?: boolean }(默认 false):传 true 时绕过内存缓存重新向后台查询。缓存属于当前运行实例,不会自动过期,也不会随登录态变化失效——用户刚在别处登录/登出后,用 refresh()(或 force: true)重建缓存。
后端不可达或返回非 2xx 时同样 resolve 为未登录(isLoggedIn() 为 false,getUserInfo() 为 null),不会 reject;只有通信通道不可用、或服务端返回的用户信息里没有用户 ID 时才会 reject。
UserInfo 字段
保证字段(getUserInfo() 非 null 时):
| 字段 | 类型 | 说明 |
|---|---|---|
userId | string | 用户 id(保证存在) |
username | string / undefined | 账号名;微信注册且未绑定手机号时可能为 u-xxxxxxxxxx 等占位串 |
nickname | string / undefined | 昵称(可能是空字符串) |
isAdmin | boolean | 该账号是否为管理员(来自服务端 is_admin) |
accountKey | string | 账号隔离键,值等于 userId |
可选扩展:随服务端变化,不保证存在,使用前判空。
| 字段 | 类型 | 说明 |
|---|---|---|
phone | string / undefined | 绑定手机号,未绑定时为空;展示手机号应使用此字段 |
isCreator | boolean / undefined | 该账号是否为创作者(来自服务端 is_creator) |
avatarUrl | string / undefined | 头像地址,来自 avatar_url;未设置头像时为空串 |
add_date | string / undefined | 注册时间,YYYY-MM-DD HH:mm:ss;服务端原样透出 |
last_login_at | string / undefined | 最近登录时间,格式同上;服务端原样透出 |
透传的 id / user_id / is_admin / is_creator / avatar_url 等原始字段也属于可选扩展。无邮箱、租户或余额字段;积分请用 LFModel.getBalance() 查询。
getContext() / refresh() 返回 { loggedIn: boolean, userInfo: UserInfo | null, baseUrl: string },其中 baseUrl 是服务端基址(无尾斜杠),应用代码一般无需读取。
示例
// @require user
if (await LFUser.isLoggedIn()) {
const userInfo = await LFUser.getUserInfo();
LFRuntime.print(userInfo?.nickname || userInfo?.username);
} else {
LFRuntime.print("插件当前未登录");
}