00 / 00

登录与 API

在 01MVP Desktop 中使用 Better Auth、oRPC 和 TanStack Query 连接 Hono 后端

桌面端不单独起后端。它连接现有 @01mvp/web 服务:

Web/API: http://localhost:7001
API base: http://localhost:7001/api
Auth:     http://localhost:7001/api/auth
oRPC:     http://localhost:7001/api/rpc

服务端入口

服务端相关代码在:

products/01mvp/apps/web/src/server/hono.ts
products/01mvp/packages/auth/src/index.ts
products/01mvp/packages/api/src/router.ts

桌面端只通过 HTTP 调用这些入口,不 import Web app 内部文件。

Auth client

桌面端 Better Auth client 在:

products/01mvp/apps/desktop/src/lib/auth-client.ts

它使用:

  • VITE_DESKTOP_SERVER_URL
  • ${VITE_DESKTOP_SERVER_URL}/auth
  • 浏览器/WebView 的 cookie 机制

桌面模板默认使用邮箱登录和注册。登录成功后,Better Auth 会把 session cookie 写到当前 WebView 可用的 cookie 存储里。

oRPC client

桌面端 oRPC client 在:

products/01mvp/apps/desktop/src/lib/api-client.ts

它指向:

${VITE_DESKTOP_SERVER_URL}/rpc

请求要带 cookie:

fetch: (request) => fetch(request, { credentials: "include" })

这样登录后的受保护 API 才能读取 Better Auth session。

当前模板里的 API 调用

模板首页保留了三类请求:

API是否需要登录用途
health.live确认 Hono/oRPC 服务可达
billing.plans确认公共业务 API 可以调用
account.profile确认登录 cookie 能被受保护 API 读取

如果这三项都能跑通,说明桌面端和后端的基础连接已经成立。

后端为什么要配置 desktop origin

浏览器预览运行在 http://localhost:7410。Tauri WebView 也会带自己的 origin。服务端需要同时允许 CORS 和 Better Auth trusted origins。

配置在:

DESKTOP_ALLOWED_ORIGINS="http://localhost:7410,http://127.0.0.1:7410,tauri://localhost,http://tauri.localhost"

解析逻辑在:

products/01mvp/packages/config/src/origins.ts

服务端使用位置:

products/01mvp/apps/web/src/server/hono.ts
products/01mvp/packages/auth/src/index.ts

改成生产 API

生产环境可以这样配置桌面端:

VITE_DESKTOP_SERVER_URL="https://start.01mvp.com/api"
VITE_DESKTOP_WEB_URL="https://start.01mvp.com"

同时服务端环境变量也要允许生产桌面 origin。不要只改桌面端 .env.local,后端也要同步。

常见问题

health 成功,profile 失败

通常是登录 cookie 没带上,或服务端没有识别当前 origin。检查:

  • Auth client base URL 是否是 ${VITE_DESKTOP_SERVER_URL}/auth
  • oRPC fetch 是否使用 credentials: "include"
  • DESKTOP_ALLOWED_ORIGINS 是否包含当前桌面 origin
  • 服务端是否重启并读取了新 env

浏览器预览能登录,Tauri 窗口不能登录

先确认 Tauri 窗口实际请求的 origin。可以在 Hono CORS 日志或浏览器开发者工具里看 request headers。把该 origin 加到 DESKTOP_ALLOWED_ORIGINS

OAuth 回调怎么处理

桌面模板当前保留邮箱登录作为基础路径。要加 OAuth,建议先让 OAuth 回调回到 Web/API,再由 Web 页面或 deep link 把结果交给桌面端。不要把 OAuth client secret 放进桌面前端。

推荐测试

vpr @01mvp/desktop#test
vpr @01mvp/product#test

桌面端测试覆盖 client URL、偏好 fallback 和模板契约。产品级测试会覆盖 Hono 边界、auth 和 config。

这篇文档有问题?