SuperAPI AI 工具集

integrating-clerk-expo

安全与审计

查看项目

更新于 10-16 01:48

技能介绍

用途:在 Expo(React Native)应用中集成 Clerk 认证,提供从安装、根布局配置到路由保护与生产部署的完整工作流。

主要约束:Expo 原生应用不支持 Clerk 邮件链接,应优先使用邮件验证码(email_code);不支持 Clerk 预制 UI 组件,需自建页面并使用 <ClerkLoaded>、<ClerkLoading>、<SignedIn>、<SignedOut>、<Protect> 等控制组件;默认会话令牌存于内存,原生应用通常应启用安全令牌缓存(Expo SecureStore)。

主要能力:安装配置 @clerk/clerk-expo 与环境变量;用 <ClerkProvider tokenCache={tokenCache}> 包裹根组件;构建自定义登录/注册(邮箱+密码、邮件验证码);在 Expo Router 或 React Navigation 中保护路由;通过 useSSO() 实现 OAuth/企业 SSO 并处理重定向;通过 useSignInWithApple() 实现 iOS 原生 Apple 登录;通过 useLocalCredentials() 实现生物识别重认证;可选实验性离线启动(__experimental_resourceCache);生产环境域名与重定向 URL 白名单准备。

使用方式:区分 Expo Router(app/ 目录)与 React Navigation 两套流程。Expo Router 默认:安装 @clerk/clerk-expo,设置 EXPO_PUBLIC_CLERK_PUBLISHABLE_KEY,用 ClerkProvider 包裹根布局,创建 (auth) 路由组与重定向守卫,使用 useSignIn/useSignUp 构建自定义页面,并用 <SignedIn>/<SignedOut>/<Protect> 或 useAuth()+重定向保护。React Navigation:包裹根容器,按 isLoaded/isSignedIn 切换加载、应用或认证栈。验证可运行 python scripts/verify_expo_clerk_setup.py . 与 npx expo start -c。

适用场景:需要在 Expo 应用中实现登录注册、路由鉴权、SSO、Apple 登录、生物识别与通行密钥的移动端项目。

限制:Apple 登录仅限 iOS 原生构建,Expo Go 不可用,并需处理 ERR_REQUEST_CANCELED;离线支持为实验性功能,需处理 network_error;通行密钥需按 Clerk 最新参考与平台约束自行集成;预构建 UI 与邮件链接在原生端不可用。