跳转到正文
返回门户

LFUser ​

全局变量:LFUser · 启用方式:// @require user

读取插件登录状态与当前登录用户信息。优先读缓存,必要时才发起一次后台请求。所有执行环境均可用:已启用/已安装应用(含后台应用)、liveDebug、run --tab(MAIN world 脚本由编辑器自动安装的 ISOLATED 世界中继桥转发请求)、run --target background,以及不带 --tab 的 run。

方法 ​

ts
LFUser.isLoggedIn(options?): Promise<boolean>

插件当前是否已登录({ force: true } 强制刷新)

ts
LFUser.getUserInfo(options?): Promise<UserInfo | null>

当前用户的 userInfo(昵称、账号等),未登录时为 null

ts
LFUser.getContext(options?): Promise<UserContext>

登录态 + userInfo 的组合上下文

ts
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 时):

字段类型说明
userIdstring用户 id(保证存在)
usernamestring / undefined账号名;微信注册且未绑定手机号时可能为 u-xxxxxxxxxx 等占位串
nicknamestring / undefined昵称(可能是空字符串)
isAdminboolean该账号是否为管理员(来自服务端 is_admin)
accountKeystring账号隔离键,值等于 userId

可选扩展:随服务端变化,不保证存在,使用前判空。

字段类型说明
phonestring / undefined绑定手机号,未绑定时为空;展示手机号应使用此字段
isCreatorboolean / undefined该账号是否为创作者(来自服务端 is_creator)
avatarUrlstring / undefined头像地址,来自 avatar_url;未设置头像时为空串
add_datestring / undefined注册时间,YYYY-MM-DD HH:mm:ss;服务端原样透出
last_login_atstring / undefined最近登录时间,格式同上;服务端原样透出

透传的 id / user_id / is_admin / is_creator / avatar_url 等原始字段也属于可选扩展。无邮箱、租户或余额字段;积分请用 LFModel.getBalance() 查询。

getContext() / refresh() 返回 { loggedIn: boolean, userInfo: UserInfo | null, baseUrl: string },其中 baseUrl 是服务端基址(无尾斜杠),应用代码一般无需读取。

示例

js
// @require user

if (await LFUser.isLoggedIn()) {
  const userInfo = await LFUser.getUserInfo();
  LFRuntime.print(userInfo?.nickname || userInfo?.username);
} else {
  LFRuntime.print("插件当前未登录");
}