# @btravstack/oauth-client 中文文档

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

版本：0\.58\.0
npm 元数据更新时间：2026-11-07T21:12:35.539Z
中文译文更新时间：2026-11-08T18:12:46.335Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40btravstack/oauth-client
原文对照：https://npmcn.com/package/%40btravstack/oauth-client/?lang=original
项目主页：https://github.com/btravstack/btravstack#readme
源码仓库：https://github.com/btravstack/btravstack

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

- 包体积（解压后）：47.1 kB，7 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- Node.js 要求：\>=22\.12
- 运行依赖：0 个
- peer 依赖：unthrown ^5\.0\.0，openid-client ^6，@btravstack/di ^0\.58\.0，@btravstack/core ^0\.58\.0，@btravstack/config ^0\.58\.0
- 首次发布：2026-10-11T20:07:38.456Z
- 最新版本发布：2026-11-07T21:12:35.135Z
- 近 30 天下载量：6764（2026-10-09 至 2026-11-07，npm 官方下载统计）
- 已发布版本数：38（近 12 个月 38 个）

## 中文简介

一个用于@btravstack/core的TokenSource端口:OAuth 2.0客户端证书和RFC 8693 令牌交换,所以一个服务将另一个服务称为自己或一个主题——每个观众缓存到到期前不久,一个由同时呼叫者共享,以及一个 stati

## 安装

```sh
npm install @btravstack/oauth-client
```

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

## README

# @btravstack/oauth-客户端

> A 类 `TokenSource` 用于 [`@btravstack/core`](https://npmcn.com/package/%40btravstack/core): 一个无记名标志 服务将他人称为本身或主体,而不是客户资格 或 RFC 8693 令牌交换——每个观众保持到到期前不久,一个获取共享 和用于测试的静态适配器.

📖 **[文档](https://btravstack.github.io/btravstack/reference/oauth-client)** • 妇女 [API 参考](https://btravstack.github.io/btravstack/api/oauth-client/)

```sh
pnpm add @btravstack/oauth-client @btravstack/core @btravstack/config \
  @btravstack/di openid-client unthrown
```

每一个依赖者都是同伴。 节点 `>=22.12`数字 : `openid-client` 仅限无害环境管理,所以 通用JS的构建依赖于 `require(esm)`。 。 。 .

## 实例

存货服务需要标志的端口,以及其构成 提供一条:

```ts
import {
  TokenSource,
  oauthClient,
  type TokenIssuerUnavailable,
  type TokenRefused,
} from "@btravstack/oauth-client";

class InventoryAuth extends Port("ReadmeInventoryAuth")<{
  readonly header: () => AsyncResult<string, TokenRefused | TokenIssuerUnavailable>;
}> {}

export const inventoryAuth = Provider(InventoryAuth)({
  inject: { tokens: TokenSource },
  sync: ({ tokens }) => ({
    header: () =>
      tokens
        .token({ audience: "https://inventory.internal", scope: "inventory:read" })
        .map(({ bearer }) => `Bearer ${bearer}`),
  }),
});

export const Gateway = Module("ReadmeGateway")({
  imports: [oauthClient()],
  provides: [inventoryAuth],
  exports: [InventoryAuth],
});
```

给一个ORPC客户端的代币 `Authorization` 标题,没有 `Promise` 离开 `Result`,为 [呼唤另一个服务本身](https://btravstack.github.io/btravstack/how-to/call-another-service-as-itself)。 。 。 .

## 选项

| 选项 | 何处 | 这是什么 |
| --- | --- | --- |
| `OAUTH_ISSUER` | 环境 `issuer` | 需要的授权服务器 |
| `OAUTH_CLIENT_ID` | 环境 `clientId` | 该服务的客户端——需要 |
| `OAUTH_CLIENT_SECRET` | 环境 `clientSecret` | 它的秘密,从库贝内兹的秘密——需要 |
| `allowInsecureIssuer` | `oauthClient({ … })` | 接受一个 `http:` 非回转的发行者( 默认) `false`(中文(简体) ) |
| `port` | `oauthClient({ … })` | 单独的客户端身份的自定义源端口 |
| `variablePrefix` | `oauthClient({ … })` | 发行者和客户端变量前缀( 默认) `OAUTH`(中文(简体) ) |
| `clock` | `oauthClient({ … })` | 以什么来衡量一个符号的寿命 |

完整表——默认,语义和推理——活在 [参考页](https://btravstack.github.io/btravstack/reference/oauth-client), (中文(简体) ), 这张名单是详细的.

## 它决定什么,它没有

**决定** 发现是懒惰的 所以部署时的发行商 需要一个标志而不是靴子的呼叫;一个标志被重复使用,直到 在它到期前一分钟,有固定的FIFO能力,因此顺从营业额 有限度;这是拒绝(`TokenRefused`,与发行人 `error` 密码)和断电(`TokenIssuerUnavailable`)是两个打出的错误; 每一次接获都报告给 `Observers`; 和这个 `oauth-client` 卫生 检查跟随最新开始的每个受众和范围获取,即使 回复结束 。 每一个请求都写在呼叫器上 突变不能改变它的授予或毒害另一个证书的缓存.

**它没有决定** 失败意味着什么 重试属于 去你的交通工具。 代表一个主题, `token({ audience, onBehalfOf: { token, tokenType, actor? } })` 使用RFC 8693交换. 发行人必须 授权代表团和薄荷 `act` 请求; 提供了演员证书 当它需要一个。 理由是 [`AGENTS.md`](https://npmcn.com/package/%40btravstack/oauth-client/AGENTS.md)。 。 。 .

## 许可证

麻省理工学院

## 常见问题

### @btravstack/oauth-client 是什么？

一个用于@btravstack/core的TokenSource端口:OAuth 2\.0客户端证书和RFC 8693 令牌交换,所以一个服务将另一个服务称为自己或一个主题——每个观众缓存到到期前不久,一个由同时呼叫者共享,以及一个 stati

### 如何安装 @btravstack/oauth-client？

在项目目录运行 npm install @btravstack/oauth-client，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：unthrown（^5\.0\.0）、openid-client（^6）、@btravstack/di（^0\.58\.0）、@btravstack/core（^0\.58\.0）、@btravstack/config（^0\.58\.0）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @btravstack/oauth-client 支持 TypeScript 吗？

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

### @btravstack/oauth-client 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### @btravstack/oauth-client 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=22\.12。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @btravstack/oauth-client 可以商用吗？

@btravstack/oauth-client 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @btravstack/oauth-client 的下载量有多少？

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

### @btravstack/oauth-client 还在维护吗？

最新版本 0\.58\.0 发布于 2026/11/08（今天）；至今共发布 38 个版本，其中过去 12 个月发布了 38 个；首次发布于 2026/10/12。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

