Soar API Setup
将 Tauri 连接到兼容 Unified Platform 宿主:Rust 配置、宿主环境、Session 与验证。
本页是 Unified Mode 版的 Supabase Setup: 让桌面应用对着一个兼容 Web 宿主(而不是 Supabase 项目)运行所需的全部配置。 还没确定模式的话,先看后端模式。
不按框架名称给予宿主特权——Next.js、Nuxt、TanStack Start 都可以;是否符合 冻结契约才是兼容边界。
1. 部署兼容宿主
把任意一个 Web 模板部署为 Unified Platform Host,并完成其宿主侧配置 (数据库、Better Auth URL 与密钥、App API):
先在 Web 端注册并确认 /api/auth/get-session 正常,再动桌面侧。跨模板的
整体流程见平台 Unified 快速开始。
2. 配置客户端构建
Unified Mode 需要 .env 里的构建时环境值:
# .env
SOAR_BACKEND_MODE=soarApi
# 宿主部署的服务根地址。仅原生侧使用:由 Rust 消费,永远不会暴露给 Webview。
SOAR_API_BASE_URL=https://your-web-app.example.com
# Better Auth 请求携带的原生 Origin。必须与宿主的 APP_SCHEME /
# trustedOrigins 白名单一致。
SOAR_AUTH_ORIGIN=soar://SUPABASE_* 键可以留空——这个模式下永远不会初始化 Supabase Adapter。到达
Webview 的只有模式本身;API URL 和 Auth Origin 留在 Rust。
配置错误会终止所选路径。无效的 SOAR_BACKEND_MODE 或缺失的
SOAR_API_BASE_URL 会让启动以可诊断的错误失败——绝不会转而初始化另一个
后端。
3. 为这个应用配置宿主
服务端(所选宿主的部署环境)需要 原生认证 所描述的原生支持:
| 服务端变量 | 桌面应用为什么需要它 |
|---|---|
APP_SCHEME=soar:// | Rust 在每个请求上发送 Origin: soar://(即所配置的 SOAR_AUTH_ORIGIN);Better Auth 会用 403 拒绝不受信任的 Origin。 |
STORAGE_PROVIDER(生产另加 R2_*) | 支撑上传服务的 presigned 直传对象存储。 |
| 支付 Provider 配置(Creem/Stripe) | 宿主签发桌面端要打开的订阅快照、Checkout URL 与管理门户。 |
Tauri Unified 刻意不实现 OAuth、设备 Token 和测试推送——能力驱动的 UI 会隐藏这些操作,因此桌面端不需要 OAuth audience 或推送凭据。
4. Session 存在 Rust 私有 Keyring 命名空间里
Unified Mode 下应用使用 Better Auth 的 Bearer token(set-auth-token
响应 header)认证,而不是 Cookie:
- Token 只持久化在 Rust 私有的 OS Keyring 命名空间——绝不进 Webview、 绝不进 localStorage、绝不进日志。
- Webview 通过类型化命令只拿到脱敏后的 Session;Bearer Token、
Authorizationheader 和 presigned URL 被排除在生成的绑定之外。 - 重启后恢复会话并向服务端校验;退出登录会同时清理 Keyring 条目和内存状态。
- Session 存于数据库、可撤销:在 Web 端撤销会话会让桌面 Token 立即失效,
应用把
401视为「需要重新登录」——不会无限重试,也不会回退到 Supabase 认证。
5. 计费经由宿主
桌面计费跟随宿主的订阅状态:应用读取共享的 订阅快照,Checkout 与门户流程打开由宿 主签发的 Provider URL。Rust 会先校验这些 URL 再对外打开。
验证配置
在两端跑一遍共享冒烟测试:
- 在桌面端注册或登录(邮箱/OTP),然后在 Web 端打开同一个账户。
- 在一端更新 Profile,从另一端读取。
- 跨两端创建、编辑、排序、删除 Todo。
- 上传头像并确认其完成 URL 可读。
- 从 Web 端撤销桌面会话,确认应用回到登录页。
- 从桌面端完成一次测试 Checkout,确认两端出现同一份权益。
- 从桌面端删除账户,确认宿主侧完成级联删除。
想要一组具体宿主+客户端的端到端流程,跟 Next.js + Swift Unified Setup 走—— 步骤同样适用于桌面端(去掉 OAuth 与推送部分)。
