Expo 集成
Expo 是一个用于使用 React Native 构建跨平台应用的流行框架。Better Auth 同时支持 Expo 原生和网页应用。
安装
配置 Better Auth 后端
在将 Better Auth 与 Expo 一起使用之前,请确保你已经设置了 Better Auth 后端。你可以使用单独的服务器,或者利用 Expo 的新 API 路由功能来托管你的 Better Auth 实例。
要开始使用,请查看我们的安装指南来在你的服务器上设置 Better Auth。如果你想查看完整示例,可以在这里找到。
要在 Expo 中使用新的 API 路由功能托管 Better Auth 实例,你可以在 Expo 应用中创建一个新的 API 路由并挂载 Better Auth 处理程序。
安装客户端依赖
你还需要在 Expo 应用中安装 Better Auth 包和 Expo 插件。
如果你计划使用我们的社交集成(如 Google、Apple 等),则在 Expo 应用中还需要一些额外的依赖。在默认的 Expo 模板中,这些依赖已经安装,所以如果你已经有这些依赖,可以跳过此步骤。
初始化 Better Auth 客户端
要在 Expo 应用中初始化 Better Auth,你需要使用 Better Auth 后端的基础 URL 调用 createAuthClient
。确保从 /react
导入客户端。
你还需要从 @better-auth/expo/client
导入客户端插件,并在初始化认证客户端时将其传递给 plugins
数组。
这很重要,因为:
- 社交认证支持: 通过在 Expo 网页浏览器中处理授权 URL 和回调来启用社交认证流程。
- 安全 Cookie 管理: 安全地存储 cookie,并自动将它们添加到你的认证请求的头部。
如果你已更改默认路径 /api/auth
,请确保包含完整的 URL,包括路径。
方案和可信来源
Better Auth 使用深层链接将用户在认证后重定向回你的应用。要启用此功能,你需要将你的应用方案添加到 Better Auth 配置中的 trustedOrigins
列表。
首先,确保你在 app.json
文件中定义了方案。
然后,更新你的 Better Auth 配置,将方案包含在 trustedOrigins
列表中。
配置 Metro 打包器
要解析 Better Auth 导出,你需要在 Metro 配置中启用 unstable_enablePackageExports
。
如果你无法启用 unstable_enablePackageExports
选项,可以使用 babel-plugin-module-resolver 手动解析路径。
修改后别忘了清除缓存。
使用方法
用户认证
初始化 Better Auth 后,你现在可以在 Expo 应用中使用 authClient
来认证用户。
社交登录
对于社交登录,你可以使用 authClient.signIn.social
方法,并提供提供商名称和回调 URL。
IdToken 登录
如果你想在移动设备上发起提供商请求,然后在服务器上验证 ID 令牌,可以使用带有 idToken
选项的 authClient.signIn.social
方法。
会话
Better Auth 提供了 useSession
钩子来在你的应用中访问当前用户的会话。
在原生环境中,会话数据将缓存在 SecureStore 中。这将允许你在应用重新加载时无需显示加载动画。你可以通过向客户端传递 disableCache
选项来禁用此行为。
向你的服务器发送经过认证的请求
要向需要用户会话的服务器发送经过认证的请求,你必须从 SecureStore
检索会话 cookie,并手动将其添加到请求头部。
示例:与 TRPC 一起使用
选项
Expo 客户端
storage:用于缓存会话数据和 cookie 的存储机制。
scheme:方案用于在用户使用 OAuth 提供商认证后深层链接回你的应用。默认情况下,Better Auth 尝试从 app.json
文件读取方案。如果你需要覆盖此设置,可以向客户端传递方案选项。
disableCache:默认情况下,客户端将在 SecureStore 中缓存会话数据。你可以通过向客户端传递 disableCache
选项来禁用此行为。
Expo 服务器
服务器插件选项:
overrideOrigin:覆盖 Expo API 路由的源(默认值:false)。如果你遇到 Expo API 路由的跨域源问题,请启用此选项。