00 / 00
登录与 API
在 Expo 中使用 Better Auth、SecureStore、oRPC 和 TanStack Query
移动端登录用 Better Auth 的 Expo 集成。服务端还是 products/01mvp/apps/web 承载,移动端只管发登录请求、存 cookie、请求 oRPC 时带上 cookie。
服务端入口
Better Auth 配置在:
products/01mvp/packages/auth/src/index.ts移动端要求服务端有:
@better-auth/exposerver pluginNATIVE_APP_SCHEME加入 trusted originsAUTH_COOKIE_PREFIX跟移动端公开变量对得上
移动端 auth client
移动端 client 在:
products/01mvp/apps/mobile/src/lib/auth-client.ts它使用:
@better-auth/expo/clientexpo-secure-storeEXPO_PUBLIC_APP_SCHEMEEXPO_PUBLIC_AUTH_COOKIE_PREFIX
登录后,Better Auth 会把 session cookie 存到 SecureStore。
移动端 oRPC client
移动端 API client 在:
products/01mvp/packages/api/src/client/mobile/orpc.tsApp 使用:
import { orpc } from "@/lib/mobile-api";
const healthQuery = useQuery(orpc.health.live.queryOptions());
const profileQuery = useQuery(orpc.account.profile.queryOptions());这个入口和 Web 的 TanStack Start client 是分开的,避免 Expo 打包进 Start 的 server request forwarding 逻辑。
模板里已有的 API 调用
首页已经包含三种请求:
health.live:公开 API,看看 server 是不是通的billing.plans:公开 API,拿到可购买的计划列表account.profile:受保护 API,验证登录 cookie 能被 oRPC 正确读取
常见问题
登录成功但受保护 API 还是返回 401
查这几项:
EXPO_PUBLIC_SERVER_URL是不是指向同一个 Web/API 服务EXPO_PUBLIC_AUTH_COOKIE_PREFIX是不是和服务端AUTH_COOKIE_PREFIX一样- 服务端是不是部署了最新的
NATIVE_APP_SCHEME - 真机跑的时候,server URL 是不是设备能访问到的地址
OAuth 回调不回 App
查这些:
app.json的expo.schemeEXPO_PUBLIC_APP_SCHEME- 服务端
NATIVE_APP_SCHEME - OAuth 后台的回调 URL 是不是指向
{EXPO_PUBLIC_SERVER_URL}/auth/callback/<provider>
这篇文档有问题?