Auth0 Expo

Polar Sponsor
爱发电 赞助
.NET 9.0

用于在Expo(React Native)移动应用中实现身份验证——包括登录、注销、用户会话、受保护路由、生物识别或令牌管理等功能的集成...

Auth0 Expo集成

功能概述

Auth0 Expo集成是一项面向实际任务的技能,主要用于使用 Expo 配置插件 的 反应- 本地- auth0 添加到 Expo( 反应本地) 应用程序的认证;1. 代理指令 : 在提供 SDK 设置指令之前。

核心要点

  • 它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
  • 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。
  • 该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。

使用与执行

从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;

结果检查与注意事项

若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。

Auth0 Expo 集成

使用 react-native-auth0 和 Expo 配置插件,为 Expo(React Native)应用添加身份验证功能。

Agent 指令:在提供 SDK 设置说明前,请先运行以下命令获取最新发布版本:

gh api repos/auth0/react-native-auth0/releases/latest --jq '.tag_name'

将该命令返回的版本号用于所有依赖项声明中,替换下方所有硬编码的版本号。若该命令执行失败,请回退至访问 https://github.com/auth0/react-native-auth0/releases 查看最新版本。

前提条件

  • Expo SDK 53 或更高版本(react-native-auth0 v5.x 要求 Expo 53+)
  • React 19 及 React Native 0.78.0 或更高版本
  • Node.js 20+(用于启动脚本自动化)
  • 已配置好 Native 类型应用的 Auth0 账户
  • 若尚未配置 Auth0,请先使用 auth0-quickstart 技能
  • 不兼容 Expo Go —— 必须使用自定义开发客户端或 EAS Build

不适用场景

使用场景 推荐技能
Bare React Native CLI 项目(未使用 Expo) auth0-react-native
React Web 单页应用(Vite/CRA) auth0-react
Next.js 应用 auth0-nextjs
Vue.js 单页应用 auth0-vue
Angular 单页应用 auth0-angular
Express.js 后端 auth0-express
原生 Android(Kotlin/Java) auth0-android
后端 API(JWT 校验) auth0-fastify-api 或 auth0-express

快速入门工作流

Agent 指令:首先检查用户提示中是否已同时提供 Auth0 的 Client ID 和 Domain。

  • 若两者均已提供,则跳过“配置方式选择”提问,直接进入 步骤 2(验证 Expo 开发客户端) 并使用这些值。
  • 若任一值缺失,请使用 AskUserQuestion 向用户提问:“您希望如何为此 Expo 项目配置 Auth0?”
    • 自动配置(推荐) —— 运行启动脚本,自动创建 Auth0 应用、数据库连接、回调 URL,并将插件配置写入 app.json
    • 手动配置 —— 用户自行提供 Auth0 Client ID 和 Domain

根据用户的选择,执行下方对应章节中的操作。

1. 配置 Auth0

自动配置

Agent 指令:在运行启动脚本前,请先执行以下快速检查。请 不要 由 Agent 执行 auth0 login —— 该命令为交互式,会导致阻塞。

  1. 检查 Node.js 版本:node --version。若未安装或版本低于 20,请向用户询问:是否安装(brew install node),或切换至手动配置。
  2. 检查 Auth0 CLI 是否存在:command -v auth0。若未安装,请向用户询问:是否安装(brew install auth0/auth0-cli/auth0),或切换至手动配置。
  3. 检查 Auth0 登录状态:auth0 tenants list --csv --no-input 2>&1。若执行失败或返回空结果:
    • 告知用户:“请在终端中运行 auth0 login,完成后通知我。”
    • 等待用户确认后,重新运行该检查以验证登录状态。
  4. 确认当前租户:解析 CSV 输出中含 → 的行,识别当前活跃租户域名。告知用户:“您的当前 Auth0 租户为:。该租户是否正确?”
    • 若正确,继续下一步。
    • 若不正确,请用户在终端中运行 auth0 tenants use ,然后重新执行第 3 步以确认新的活跃租户。

确认无误后,运行启动脚本:

cd /auth0-expo/scripts
npm install
node bootstrap.mjs 

该脚本将校验 Expo 项目、创建 Native 类型的 Auth0 应用、配置数据库连接,并将插件配置写入 app.json。Agent 不应手动处理 client_id 或 domain。

若脚本因会话过期失败,请让用户再次运行 auth0 login,然后重试脚本。其他失败情形请回退至下方的 手动配置。

脚本成功执行后,进入 步骤 2(验证 Expo 开发客户端)。

手动配置(用户提供的凭据)

Agent 指令:请使用 AskUserQuestion 向用户请求 Auth0 凭据:

“我需要您的 Auth0 凭据来配置身份验证。请提供:

  1. Auth0 Domain(例如:your-tenant.us.auth0.com)
  2. Client ID(32 位字母数字字符串)

您可在 Auth0 控制台的 Applications > Applications > your app > Settings 中找到这两项。若您尚未创建 Auth0 应用,请新建一个类型为 Native 的应用,并从设置页面复制 Domain 和 Client ID。”

随后将配置写入 app.json,并进入 步骤 2。

2. 验证 Expo 开发客户端

Agent 指令:在安装 Auth0 SDK 前,请检查项目是否已安装 expo-dev-client。读取项目中的 package.json,并在 dependencies 或 devDependencies 中查找 expo-dev-client。

  • 若已发现 expo-dev-client:直接进入步骤 3。

  • 若未发现 expo-dev-client:使用 AskUserQuestion 发送以下消息:

    “react-native-auth0 SDK 需要自定义 Expo 开发客户端 —— 它 不兼容 Expo Go。您的项目尚未安装 expo-dev-client。

    您希望如何继续?

    1. 为我安装 —— 我将运行 npx expo install expo-dev-client 并继续配置
    2. 我自行配置 —— 跳过此步骤,直接进入 Auth0 SDK 安装”

    若用户选择选项 1,请运行:

    npx expo install expo-dev-client
    

    然后进入步骤 3。若选择选项 2,则直接进入步骤 3。

3. 安装 SDK

npx expo install react-native-auth0

4. 配置 Expo 配置插件

在 app.json(或 app.config.js)中添加 react-native-auth0 插件,并填入您的 Auth0 Domain 和自定义 scheme。同时确保已设置 bundleIdentifier(iOS)和 package(Android):

{
  "expo": {
    "ios": { "bundleIdentifier": "com.yourcompany.yourapp" },
    "android": { "package": "com.yourcompany.yourapp" },
    "plugins": [
      ["react-native-auth0", {
        "domain": "YOUR_AUTH0_DOMAIN",
        "customScheme": "YOUR_CUSTOM_SCHEME"
      }]
    ]
  }
}

customScheme 必须全为小写字母,且不含特殊字符(例如:auth0sample)。有关 HTTPS 回调、多域名支持、EAS Build 及密钥管理,请参阅 配置指南。

Agent 指令:若您使用了自动配置(步骤 1),启动脚本已将插件配置写入 app.json —— 请验证其内容是否正确,但无需覆盖。若使用手动配置,请使用用户提供的 Domain 和自定义 scheme 现在写入配置。

5. 配置回调 URL

在 Auth0 控制台的 Allowed Callback URLs 和 Allowed Logout URLs 中添加以下内容:

YOUR_CUSTOM_SCHEME://YOUR_AUTH0_DOMAIN/ios/YOUR_BUNDLE_ID/callback,
YOUR_CUSTOM_SCHEME://YOUR_AUTH0_DOMAIN/android/YOUR_PACKAGE/callback

所有值必须为 全小写,且 末尾不能带斜杠。如需配置 HTTPS 回调 URL(App Links / Universal Links),请参阅配置指南。

6. 使用 Auth0Provider 添加身份验证

使用 Auth0Provider 包裹您的应用,并使用 useAuth0 Hook:

Agent 指令:在添加新 UI 元素前,请搜索项目中已存在的登录、登出、注册或注销按钮的点击处理函数。若已存在相关处理函数,请将 Auth0 代码接入其中。仅当未发现任何现有处理函数时,才创建新按钮。

import React from 'react';
import { Auth0Provider, useAuth0 } from 'react-native-auth0';
import { View, Button, Text, ActivityIndicator } from 'react-native';

function HomeScreen() {
  const { authorize, clearSession, user, isLoading, error } = useAuth0();

  const login = async () => {
    try {
      await authorize(
        { scope: 'openid profile email' },
        { customScheme: 'YOUR_CUSTOM_SCHEME' }
      );
    } catch (e) {
      console.error('Login error:', e);
    }
  };

  const logout = async () => {
    try {
      await clearSession({ customScheme: 'YOUR_CUSTOM_SCHEME' });
    } catch (e) {
      console.error('Logout error:', e);
    }
  };

  if (isLoading) {
    return ;
  }

  return (
    
      {user ? (
        <>
          Welcome, {user.name}!
          {user.email}
          

7. 构建与验证

Agent 指令:完成集成后,请构建项目以验证其能否成功编译:

npx expo prebuild --clean
npx expo run:ios
# 或
npx expo run:android

若构建失败,请分析错误输出。常见集成构建失败原因包括:

  • “Invariant Violation: Native module cannot be null”:使用了 Expo Go 而非开发构建 —— 请改用 npx expo run:ios 或 npx expo run:android,而非 npx expo start
  • 插件未生效:app.json 的 plugins 数组中缺失 react-native-auth0 —— 请检查插件配置是否正确
  • iOS 下 Pod install 失败:运行 npx expo prebuild --clean 以重新生成原生项目
  • Android 下 Manifest 合并失败:auth0Domain 占位符冲突 —— 请确保仅由配置插件设置该 Domain

每次修复后均需重新运行构建。请记录构建-修复迭代次数。

失败检查:若经过 5–6 次修复尝试后构建仍失败,请停止并使用 AskUserQuestion 向用户提问:“多次修复尝试后构建仍失败。您希望如何继续?”

  • 让技能继续迭代修复
  • 手动修复 —— 展示剩余错误信息
  • 跳过构建验证 —— 不依赖成功构建而继续

详细文档

  • 配置指南 —— 开发客户端要求、自动配置流程、Expo 配置插件、回调 URL、EAS Build、密钥管理
  • 集成模式 —— 登录/登出、凭据管理、生物特征认证、Token 刷新、组织支持、DPoP、错误处理
  • API 参考与测试 —— 配置选项、useAuth0 Hook API、测试清单、常见问题、安全性

常见错误

错误 修复方法
使用 Expo Go 而非开发构建 react-native-auth0 依赖原生代码。请使用 npx expo run:ios / npx expo run:android,或通过 EAS 创建开发构建。
在 authorize/clearSession 调用中遗漏 customScheme 需将 { customScheme: 'your-scheme' } 作为第二个参数传入 authorize() 和 clearSession()。该值必须与 app.json 插件配置中一致。
回调 URL 不匹配 确保回调 URL 全为小写、无尾部斜杠,且与 Auth0 控制台完全一致:{customScheme}://{domain}/ios/{bundleId}/callback
应用类型未设为 Native Auth0 应用在控制台中必须为 Native 类型,不可为 SPA 或 Regular Web。
app.json 中缺少 bundleIdentifier 或 package expo.ios.bundleIdentifier 和 expo.android.package 均须在 app.json 中设置,回调 URL 方可生效。
忘记用 Auth0Provider 包裹应用 所有使用 useAuth0() 的组件,都必须是 Auth0Provider 的子组件。
在 Expo < 53 环境中使用 react-native-auth0 v5.x v5.x 要求 Expo 53+。旧版 Expo 请使用 v4.x。
未在真实设备上测试 生物特征认证(Face ID、指纹)仅在真实设备上可用,模拟器不支持。发布前务必在真实设备上完整测试整个认证流程。

相关技能

  • auth0-quickstart —— 配置 Auth0 账户及应用
  • auth0-react-native —— Bare React Native CLI 项目
  • auth0-mfa —— 配置多因素认证
  • auth0-cli —— 通过终端管理 Auth0 资源

参考资料

  • Auth0 Expo 快速入门
  • react-native-auth0 GitHub 仓库
  • react-native-auth0 API 文档
  • Expo 示例应用
  • EXAMPLES.md

相关专题

更多
DBeaver怎么导入数据
DBeaver怎么导入数据

DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。

2026.11.05

0

12

DBeaver安全防护教程大全
DBeaver安全防护教程大全

DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。

2026.11.05

0

12

DBeaver连接创建与配置教程
DBeaver连接创建与配置教程

本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。

2026.11.04

0

16

XORM框架结构体映射与表结构同步
XORM框架结构体映射与表结构同步

本专题围绕XORM框架的结构体映射展开,说明表名与字段的命名策略、xorm标签常用属性、主键自增与时间字段自动填充,并演示Sync2自动建表、增量字段升级、索引声明与反向生成结构体的完整流程。

2026.11.04

0

15

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

2026.11.04

0

15

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

2026.11.04

0

16

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

2026.11.04

0

16

XORM框架零基础入门教程
XORM框架零基础入门教程

本专题梳理XORM框架的入门路径,从框架定位、依赖安装、连接数据库到跑通第一个增删改查示例,讲清Engine初始化、日志开启与项目目录规划,并对比GORM等同类ORM的差异,帮助Go开发者建立整体认知。

2026.11.04

0

15

Docker Desktop怎么设置端口映射
Docker Desktop怎么设置端口映射

本专题聚焦Docker Desktop容器端口映射与访问配置,整理从创建容器、设置端口绑定到验证本地服务访问的操作流程。针对端口被占用、映射配置错误、容器服务无法访问等情况,也提供相应的检查方向,方便用户完成端口配置。

2026.11.03

0

18

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 134.1万人学习