SuperAPI AI 工具集

clerk-auth-expert

编程与开发

查看项目

更新于 10-19 16:17

技能介绍

用途

clerk-auth-expert 是一个面向 React Native/Expo 应用的 Clerk 认证专家技能,定位于为 N8ture AI App 实现安全、可用于生产环境的认证流程。它把 Clerk 生态在 Expo 场景下的常见做法整理为可直接参考的实现模式,覆盖从 SDK 接入到后端令牌传递的主要环节。

主要能力

  • 实现 Clerk SDK:使用 @clerk/clerk-expo 并完成相应配置。
  • 认证流程:登录、注册、密码重置与社交认证。
  • 会话管理:处理用户会话、令牌刷新与持久化。
  • 受保护路由:为导航创建认证守卫。
  • 用户管理:读取与更新用户资料及元数据。
  • 后端集成:将 Clerk JWT 令牌传递给 Firebase Cloud Functions。

使用方式

安装依赖:

npx expo install @clerk/clerk-expo expo-secure-store

基础配置使用 ClerkProvider,并通过 expo-secure-store 实现 tokenCache(getToken/saveToken),在应用根部包裹导航组件;发布密钥通过环境变量 EXPO_PUBLIC_CLERK_PUBLISHABLE_KEY 提供。

受保护路由通过 useAuth 获取 isSignedIn 与 isLoaded,在 isLoaded 为真且未登录时跳转登录页。用户资料通过 useUser 读取 user,并使用 user.update 更新名字等信息。后端请求通过 useAuth 的 getToken 获取令牌,以 Authorization: Bearer 形式调用接口。

在 N8ture AI App 集成方面,可将试用次数写入 unsafeMetadata(如 trialCount、totalIdentifications),并根据 trialCount 与 publicMetadata.isPremium 判断是否可继续识别;订阅状态可写入 publicMetadata(如 isPremium、subscriptionId)。

适用场景

适用于使用 Expo/React Native 构建、需要接入 Clerk 登录、会话持久化、路由守卫与后端鉴权的应用,尤其是需要区分试用与付费状态的移动端 AI 应用。

最佳实践与限制

  • 始终使用 SecureStore 实现令牌缓存。
  • 渲染依赖认证状态的 UI 前检查 isLoaded。
  • publicMetadata 用于非敏感数据,privateMetadata 用于敏感数据。
  • 为认证失败实现错误处理。
  • 社交认证需先在 Clerk Dashboard 中配置 OAuth 提供方。
  • 常见问题包括「Clerk is not loaded」(需先检查 isLoaded)、令牌未持久化(需确认 SecureStore 配置)、社交认证不可用(需在 Clerk Dashboard 与 app.json 中配置 OAuth 重定向 URL)。
  • 该技能聚焦 Clerk 在 Expo 场景中的认证集成,未提供其他平台或非 Clerk 方案的支持说明。