@atcute/password-session

中文文档
1.0.2发布于 2026/07/160BSDES Module近 30 天下载 1748

aT 协议基于密码的会话管理

中文使用文档
文档目录8 节
  1. 使用量
  2. 登录
  3. URL 简称
  4. 续会
  5. 带有证书倒置的缓存会话
  6. 懒惰的建筑
  7. 清理
  8. 调用

@ atcute/ password- session

基于密码的AT 协议服务的会话管理. 管理访问/更新代号生命周期, 401自动刷新,通过回调持续会话.

对于基于浏览器的应用程序,选择基于 OAuth 的认证。 当使用密码认证时,请使用应用程序 密码而不是主账户证书.

npm install @atcute/password-session @atcute/client @atcute/bluesky

使用量

登录

import { Client, ok } from '@atcute/client';
import { PasswordSession } from '@atcute/password-session';

import type {} from '@atcute/bluesky';

const session = await PasswordSession.login(
    { service: 'https://bsky.social', identifier: 'you.bsky.social', password: 'your-app-password' },
    {
        onUpdate(data) {
            // called on login and token refresh — persist the session
            localStorage.setItem('session', JSON.stringify(data));
        },
        onDelete(data) {
            // called on logout or session invalidation — clean up
            localStorage.removeItem('session');
        },
    },
);

const rpc = new Client({ handler: session });

const data = await ok(rpc.get('com.atproto.server.getSession'));
console.log(data.did);

URL 简称

对于 bots 和脚本,请使用 URL 的快手 await using 自动登录 :

await using session = await PasswordSession.login('https://handle:[email protected]');
const rpc = new Client({ handler: session });

续会

在不重新进入全权证书的情况下继续开会:

const saved = localStorage.getItem('session');
if (saved) {
    const session = await PasswordSession.resume(JSON.parse(saved), {
        onUpdate(data) {
            localStorage.setItem('session', JSON.stringify(data));
        },
        onDelete(data) {
            localStorage.removeItem('session');
        },
    });
    const rpc = new Client({ handler: session });
}

带有证书倒置的缓存会话

对于既存有证书又存有缓存会话的bot, login() 能够尝试缓存会话 首先返回到新认证 :

const session = await PasswordSession.login('https://handle:[email protected]', {
    session: loadFromDisk(),
    onUpdate(data) {
        saveToDisk(data);
    },
});

懒惰的建筑

如果您不需要前置验证, 请直接构造 。 符号在 401 上懒散地刷新 :

const session = new PasswordSession(savedData, { onUpdate, onDelete });
const rpc = new Client({ handler: session });

清理

删除无效会话服务器侧, 不恢复 :

await PasswordSession.delete(savedData);

调用

回调何时会话状态
onUpdate登录成功, 令牌刷新成功活动( 更新)
onUpdateFailure符号刷新暂时失败( 网络)活动(保留)
onDelete登录成功, 会话无效已销毁
onDeleteFailure暂时停用( 网络)活动(保留)

所有回调收到 this: PasswordSession 上下文,不能抛出.

版本与发布记录

@atcute/password-session 共发布 5 个版本,首次发布于 2026/02/24;过去 12 个月发布了 5 个版本。

版本发布日期距今
1.0.2latest2026/07/163 个月前
1.0.12026/06/304 个月前
1.0.02026/05/096 个月前
0.1.12026/05/086 个月前
0.1.02026/02/248 个月前

关于 @atcute/password-session 的常见问题

@atcute/password-session 是什么?

aT 协议基于密码的会话管理

如何安装 @atcute/password-session?

在项目目录运行 npm install @atcute/password-session,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@atcute/identity(^2.0.0)、@atcute/lexicons(^2.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@atcute/password-session 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/atcute__password-session 是否存在。

@atcute/password-session 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@atcute/password-session 可以商用吗?

@atcute/password-session 使用 0BSD 许可。几乎没有限制:可自由使用、修改和分发,连保留版权声明也不要求。以上为概括,不构成法律意见,请以许可原文为准。

@atcute/password-session 的下载量有多少?

根据 npm 官方下载统计,@atcute/password-session 在 2026/10/07 – 2026/11/05 这 30 天内被下载 1,748 次,日均约 58 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@atcute/password-session 还在维护吗?

最新版本 1.0.2 发布于 2026/07/16(3 个月前);至今共发布 5 个版本,其中过去 12 个月发布了 5 个;首次发布于 2026/02/24。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。