@auth0/auth0-spa-js

中文文档
2.30.0发布于 2026/10/29MITTypeScriptESM + CJS构建来源已验证近 30 天下载 1177.5万

Auth0 SDK 单页应用程序,使用授权代码 Grant Flow with PKCE

中文使用文档
文档目录17 节
  1. 文档
  2. 开始
  3. 安装
  4. 配置 Auth0
  5. 配置 SDK
  6. 登录
  7. 在线访问
  8. 实验中心
  9. 匿名会话
  10. 更多实例
  11. API 参考
  12. 企业连接
  13. 反馈
  14. 捐款
  15. 提出问题
  16. 脆弱性报告
  17. 什么是奥特?

Auth0 SDK for Single Page Applications using Authorization Code Grant Flow with PKCE.

npm version Codecov Ask DeepWiki Downloads License CircleCI

📚 文档 - 🚀 开始 - 💻 API 参考 - 💬 反馈

文档

  • 快速启动 - 使用 Auth0 快速向您的应用程序添加登录、登录和用户信息的交互式指南.
  • 软件样本 - 与Auth0合并的完整样本应用程序.
  • 问题 - 经常问关于Auth0 -spa -js SDK的问题.
  • 实例 - 常见情况代码样本.
  • Docs 站点 - 探索我们的Docs网站, 了解更多关于Auth0.

开始

安装

使用 无 在工程目录中运行以下命令:

npm install @auth0/auth0-spa-js

来自CDN:

<script src="https://cdn.auth0.com/js/auth0-spa-js/2.30/auth0-spa-js.production.js"></script>

配置 Auth0

创建一个 单页应用程序 输入 Auth0 剪贴板。 。 。 .

如果你在使用现有的应用程序,验证您在您的单页应用程序中配置了以下设置:

  • 点击应用程序页面的“ 设置” 标签 .
  • 向下滚动并点击"显示高级设置"链接.
  • 在"高级设置"下,点击"OAuth"分页.
  • 确保“JsonWebToken 签名算法”设定为 RS256 而"OIDC Conformant"是启用的.

其次,在“设置”页面的“应用程序 URIs”栏下为您的应用程序配置以下URL:

  • 允许召回 URL数字 : http://localhost:3000
  • 允许登录 URL数字 : http://localhost:3000
  • 允许的 Web 来源数字 : http://localhost:3000

这些 URL 应当反映您应用程序运行的源代码 . 允许召回 URL 也可能包括一个路径,取决于你处理回调的地方(见下文).

注意到 客户身份 财务报告和审定财务报表 域名 “基本信息”栏下的数值。 下一步你需要这些价值.

配置 SDK

创建一个 Auth0Client 在提交或初始化您的申请之前。 你只应该有一个客户的例子.

import { createAuth0Client } from '@auth0/auth0-spa-js';

//with async/await
const auth0 = await createAuth0Client({
  domain: '<AUTH0_DOMAIN>',
  clientId: '<AUTH0_CLIENT_ID>',
  authorizationParams: {
    redirect_uri: '<MY_CALLBACK_URL>'
  }
});

//or, you can just instantiate the client on its own
import { Auth0Client } from '@auth0/auth0-spa-js';

const auth0 = new Auth0Client({
  domain: '<AUTH0_DOMAIN>',
  clientId: '<AUTH0_CLIENT_ID>',
  authorizationParams: {
    redirect_uri: '<MY_CALLBACK_URL>'
  }
});

//if you do this, you'll need to check the session yourself
try {
  await auth0.getTokenSilently();
} catch (error) {
  if (error.error !== 'login_required') {
    throw error;
  }
}

登录

然后可以使用登录 Auth0Client 您创建的示例 :

<button id="login">Click to Login</button>
//redirect to the Universal Login Page
document.getElementById('login').addEventListener('click', async () => {
  await auth0.loginWithRedirect();
});

//in your callback route (<MY_CALLBACK_URL>)
window.addEventListener('load', async () => {
  const redirectResult = await auth0.handleRedirectCallback();
  //logged in. you can get the user profile like this:
  const user = await auth0.getUser();
  console.log(user);
});

在线访问

[注] 通过SDKs提供的在线访问(在线刷新托肯斯)支持目前正在早期访问中. 要请求访问此功能, 请联系您的 Auth0 代表 .

[尖叫声] 在线刷新 Tokens 目前不支持资源服务器 以弗相会 启用 。 二. 使两者均能实现 allow_online_access 和同一资源服务器上的"Allow for Ephemeral Sessions"的结果是,授权服务器发布了一个在线刷新托肯,然后被拒绝(Allow for Ephemeral Sessions)invalid_grant在下一个刷新。 在添加 Ephemeral 会话支持之前, 在线刷新托肯, 禁用任何与之使用的资源服务器上的“ Allow for Ephemeral会话 ” refreshTokenMode: RefreshTokenMode.Online。 。 。 .

设定 refreshTokenMode 改为 RefreshTokenMode.Online (连同所需员额) useRefreshTokens: true 财务报告和审定财务报表 useDpop: true用于 在线刷新 非旋转的刷新符号,绑定在Auth0会期内. SDK 注入到 online_access 通过刷新式赠款更新范围和路线.

import { createAuth0Client, RefreshTokenMode } from '@auth0/auth0-spa-js';

const auth0 = await createAuth0Client({
  domain: '<AUTH0_DOMAIN>',
  clientId: '<AUTH0_CLIENT_ID>',
  useRefreshTokens: true,
  refreshTokenMode: RefreshTokenMode.Online,
  useDpop: true,
  authorizationParams: {
    redirect_uri: '<MY_CALLBACK_URL>'
  }
});

refreshTokenMode 是一个子选项 useRefreshTokens: 它默认为 RefreshTokenMode.Offline (上述旋转刷新符号),必须设置为 RefreshTokenMode.Online 用于在线刷新托肯斯。 在线模式都要求 useRefreshTokens: true 财务报告和审定财务报表 useDpop: true。见 在线访问 以全向导.

实验中心

[注] 实验中心通过SDKs的支持目前正在早期访问中. 要请求访问此功能, 请联系您的 Auth0 代表 .

实验中心 允许您测试您的登录流量。 Auth0 指定每个用户到一个变体服务器侧. 当需要强制特定变体——用于测试或应用地标工具的决定时——通过 experiment_id 财务报告和审定财务报表 variation_id 在登录通话中 :

await auth0.loginWithRedirect({
  authorizationParams: {
    experiment_id: '<EXPERIMENT_ID>',
    variation_id: '<VARIATION_ID>'
  }
});

推翻仅适用于该请求。 下一个没有这些参数的登录返回到正常的服务器侧任务 .

通过这些 每一次通话 而不是在 authorizationParams 在客户端构建时, 覆盖不会影响沉默 prompt=none 代号-续约电话(实验中心不运行于这些).

测试: 从测试自动化(如Cypress、Playwright)驱动,其中的ID从一个CI环境变量读取,对接一个中转租户。 在已运出的申请代码中不要使用硬码变体ID.

用于生产: 从一个特性旗工具(例如LOANDAKLY)中通过变种决定,该工具已经决定了用户应该看到的变种.

匿名会话

[注] 匿名会话通过SDKs的支持目前处于早期访问中. 要请求访问此功能, 请联系您的 Auth0 代表 .

匿名会议在访问者登录前会指定一个持续身份. 设定 createAnonymousSessionOnFailedSilentAuth: true 使 SDK 在 checkSession() 找不到认证用户 .

// createAuth0Client calls checkSession() internally — the anonymous session is ready on init
const auth0 = await createAuth0Client({
  domain: '<AUTH0_DOMAIN>',
  clientId: '<AUTH0_CLIENT_ID>',
  createAnonymousSessionOnFailedSilentAuth: true,

  // default is 'localStorage'; use 'memory' if you don't want persistence
  anonymousSessionsCacheMode: 'localStorage'
});

const { accessToken } = await auth0.anonymous.getTokenSilently({
  audience: 'https://api.example.com'
});

见 匿名会话 完整指南,包括带有元数据的明确会话创建、多个受众和登录.

更多实例

涵盖各种情景的综合实例,包括伐木、调用API、刷新信使、在线访问、组织、密码、外交部、DPoP等等,请参见 缩略语.md 文档.

API 参考

探索Auth0-spa-js中可用的API方法.

企业连接

Entertainment Connect让B2B SaaS应用程序添加企业SSO而不替换其已存在的认证堆栈. SDK的出口 isFederatedDomain 用于电子邮件域搜索;然后以 loginWithRedirect 使用电子邮件作为 login_hint。 。 。 . 见 EXAMPLES.md#企业连接 为完整的设置和流动.

反馈

捐款

我们赞赏反馈和对这次再投资的贡献! 在开始前,请参看以下内容:

提出问题

请提供反馈或报告错误 提出我们的问题追踪器。 。 。 .

脆弱性报告

请不要在公共 GitHub 问题跟踪器上报告安全漏洞 。 这个 负责任的披露程序 详细说明披露安全问题的程序.

什么是奥特?

Auth0 Logo

Auth0是一个易于执行,可适应的认证和授权平台. 学习更多退房 为什么是Auth0?

这个项目根据麻省理工学院的许可证获得许可。 见 自由主义 需要更多信息的文件.

版本与发布记录

@auth0/auth0-spa-js 共发布 138 个版本,首次发布于 2019/03/26;过去 12 个月发布了 41 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
2.30.0latest2026/10/299 天前
2.29.02026/10/2117 天前
2.28.42026/10/1424 天前
2.28.32026/10/0929 天前
2.28.22026/10/021 个月前
2.28.12026/10/011 个月前

其他发布通道:beta → 2.0.0-beta.1。

关于 @auth0/auth0-spa-js 的常见问题

@auth0/auth0-spa-js 是什么?

Auth0 SDK 单页应用程序,使用授权代码 Grant Flow with PKCE

如何安装 @auth0/auth0-spa-js?

在项目目录运行 npm install @auth0/auth0-spa-js,或使用 pnpm add / yarn add / bun add。

@auth0/auth0-spa-js 支持 TypeScript 吗?

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

@auth0/auth0-spa-js 支持 ESM 还是 CommonJS?

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

@auth0/auth0-spa-js 可以商用吗?

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

@auth0/auth0-spa-js 的下载量有多少?

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

@auth0/auth0-spa-js 还在维护吗?

最新版本 2.30.0 发布于 2026/10/29(9 天前);至今共发布 138 个版本,其中过去 12 个月发布了 41 个;首次发布于 2019/03/26。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。