# @dfinity/auth-client 中文文档

规范地址：https://npmcn.com/package/%40dfinity/auth-client/

版本：3\.4\.3
npm 元数据更新时间：2026-10-05T08:13:38.644Z
中文译文更新时间：2026-11-12T05:21:00.963Z
软件包许可：Apache-2\.0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40dfinity/auth-client
原文对照：https://npmcn.com/package/%40dfinity/auth-client/?lang=original
项目主页：https://js.icp.build/core/v3.2/libs/auth-client
源码仓库：https://github.com/dfinity/icp-js-core

弃用说明：This package has been deprecated\. Its functionality is now part of \`@icp-sdk/auth\` \(https://js\.icp\.build/auth\), under the \`client\` submodule\.

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：149 kB，23 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：1 个
- peer 依赖：@dfinity/agent 3\.4\.3，@dfinity/identity 3\.4\.3，@dfinity/principal 3\.4\.3
- 首次发布：2021-04-29T23:00:11.056Z
- 最新版本发布：2025-11-19T16:33:01.756Z
- 近 30 天下载量：22862（2026-10-12 至 2026-11-10，npm 官方下载统计）
- 已发布版本数：101（近 12 个月 1 个）

## 中文简介

JavaScript 和 TypeScript 库提供与 IC 互联网身份的简单集成

## 安装

```sh
npm install @dfinity/auth-client
```

也可以使用：`pnpm add @dfinity/auth-client`、`yarn add @dfinity/auth-client`、`bun add @dfinity/auth-client`

## README

# @dfinity/auth-客户端

用互联网身份服务认证您的网络应用程序的简单界面

你想知道更多关于开发互联网计算机的信息吗? 访问 [开发者 Docs](https://internetcomputer.org/docs/home)。 。 。 .

额外的 API 文档可以找到 [这里](https://js.icp.build/core/v3.2/libs/auth-client/api)。 。 。 .

> 还在使用 `@dfinity/auth-client`迁移到 [`@icp-sdk/auth`](https://js.icp.build/auth/latest/upgrading/v4)来啊!

* * *

## 安装

使用 Authclient 键 :

```shell
npm i --save @dfinity/auth-client
```

### 在浏览器中 :

```ts
import { AuthClient } from '@dfinity/auth-client';
```

要启动 Auth 客户端, 请运行

```ts
const authClient = await AuthClient.create();
```

认证者可以登录

```ts
authClient.login({
  // 7 days in nanoseconds
  maxTimeToLive: BigInt(7 * 24 * 60 * 60 * 1000 * 1000 * 1000),
  onSuccess: async () => {
    handleAuthenticated(authClient);
  },
});
```

它打开一个 `identity.ic0.app` 窗口中,将您的代表团保存到本地Storage,然后设置您的身份.

然后,你可以使用这个身份 来使用 `@dfinity/agent` `Actor`。 。 。 .

```ts
const identity = await authClient.getIdentity();
const actor = Actor.createActor(idlFactory, {
  agent: new HttpAgent({
    identity,
  }),
  canisterId,
});
```

## 储存和钥匙管理

如果您不愿使用 ECDSA 密钥或默认的 IndexedDb 存储接口,您可以自行提供. 使用自定义存储执行的一些原因可能是:

-   您喜欢使用本地Storage
-   你不想把密钥贯穿整个页面负载,以加强安全性
-   你还有另外一种身份管理策略

有一个导出本地Storage接口, 但是任何执行此接口的结构 `AuthClientStorage` 界面将工作.

```ts
export type StoredKey = string | CryptoKeyPair;
export interface AuthClientStorage {
  get(key: string): Promise<StoredKey | null>;

  set(key: string, value: StoredKey): Promise<void>;

  remove(key: string): Promise<void>;
}
```

这样你就可以轻松地执行自己的

```ts
const noStorageImpl = {
  get(key: string) {
    return Promise.resolve(null);
  },
  set(key: string, value: StoredKey) {
    return Promise.resolve();
  },
  remove(key: string) {
    return Promise.resolve();
  },
};
const authClient = await AuthClient.create({
  storage: noStorageImpl,
});
```

如果您使用自定义存储执行, 如 `LocalStorage` 仅支持字符串,您应该使用 `keyType` 选项 `Ed25519` 键而不是默认值 `ECDSA` 键.

```ts
const authClient = await AuthClient.create({
  storage: new LocalStorage(),
  keyType: 'Ed25519',
});
```

## 离子管理

AuthClient为会话管理提供了两种安全形式. 第一部分是因特网身份认证代表团 `maxTimeToLive` 选项,以纳秒表示 `DelegationIdentity` 你回来是有效的。 第二个是Idle管理器,该管理器使用键盘,鼠标和触摸屏身份. Idle 管理器将自动登录出您, 如果您在一段时间内不与浏览器互动 .

如果你没有给IdleManager通过任何选项,它将会在10分钟的不活动后,通过移除 `DelegationIdentity` 从本地Storage 调用 `window.location.reload()`。 。 。 .

如果你通过一个 `onIdle` 选项,它将在用户闲置时调用此功能,替换默认窗口. location.reload () actual. 在闲置的“管理器”创建后,您也可以注册回调 `idleManager.registerCallback()` 方法,它也会取代默认的回调.

IdleManager的全套选项是:

```ts
  /**
   * Callback after the user has gone idle
   */
  onIdle?: IdleCB;
  /**
   * timeout in ms
   * @default 30 minutes [600_000]
   */
  idleTimeout?: number;
  /**
   * capture scroll events
   * @default false
   */
  captureScroll?: boolean;
  /**
   * scroll debounce time in ms
   * @default 100
   */
  scrollDebounce?: number;
```

此外,AuthClient还接受另外几面旗帜,用于: `idleOptions` 来控制 IdleManager :

```ts
  /**
   * Disables idle functionality for {@link IdleManager}
   * @default false
   */
  disableIdle?: boolean;

  /**
   * Disables default idle behavior - call logout & reload window
   * @default false
   */
  disableDefaultIdleCallback?: boolean;
```

### 闲置管理器示例使用

```ts
const authClient = await AuthClient.create({
  idleOptions: {
    idleTimeout: 1000 * 60 * 30, // set to 30 minutes
    disableDefaultIdleCallback: true // disable the default reload behavior
  }
});
// ...authClient.login()
const identity = await authClient.getIdentity();
const actor = Actor.createActor(idlFactory, {
  agent: new HttpAgent({
    identity,
  }),
  canisterId,
});

refreshLogin() {
  // prompt the user then refresh their authentication
  authClient.login({
    onSuccess: async () => {
      const newIdentity = await AuthClient.getIdentity();
      Actor.getAgent(actor).replaceIdentity(newIdentity);
    }
  });
}

authClient.idleManager?.registerCallback?.(refreshLogin);
```

在这个代码中,我们创建 `authClient` 30分钟的闲暇时间 当用户闲置时,我们取消他们的身份,并促使他们再次登录.

用户登录后,可以在演员中设置新身份而无需重新加载页面.

注:取决于 [@dfinity/代理服务器](https://www.npmjs.com/package/@dfinity/agent) 财务报告和审定财务报表 [@dfinity/身份](https://www.npmjs.com/package/@dfinity/identity)。 。 。 .

## 常见问题

### @dfinity/auth-client 是什么？

JavaScript 和 TypeScript 库提供与 IC 互联网身份的简单集成注意：该包已被作者标记为弃用——This package has been deprecated\. Its functionality is now part of \`@icp-sdk/auth\` \(https://js\.icp\.build/auth\), under the \`client\` submodule\.

### 如何安装 @dfinity/auth-client？

在项目目录运行 npm install @dfinity/auth-client，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：@dfinity/agent（3\.4\.3）、@dfinity/identity（3\.4\.3）、@dfinity/principal（3\.4\.3）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @dfinity/auth-client 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @dfinity/auth-client 支持 ESM 还是 CommonJS？

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

### @dfinity/auth-client 可以商用吗？

@dfinity/auth-client 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @dfinity/auth-client 的下载量有多少？

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

### @dfinity/auth-client 还在维护吗？

最新版本 3\.4\.3 发布于 2025/11/20（11 个月前）；至今共发布 101 个版本，其中过去 12 个月发布了 1 个；首次发布于 2021/04/30。作者已将其标记为弃用，新项目建议寻找替代方案。

