如何配置Open Wearables支持Garmin、Oura、Fitbit等第三方平台:完整OAuth凭证设置指南
【免费下载链接】open-wearablesSelf-hosted platform to unify wearable health data through one AI-ready API.项目地址: https://gitcode.com/gh_mirrors/op/open-wearables
Open Wearables 是一个可自托管的穿戴设备健康数据统一平台,通过一套 AI-ready API 聚合 Garmin、Oura、Fitbit、Whoop、Strava 等平台的睡眠、运动、心率数据。想让这些数据流进自己的系统?关键在于正确配置各家平台的OAuth 凭证(Client ID / Client Secret)。本指南将带你从零完成第三方平台接入,涵盖 Garmin、Oura、Fitbit 三个典型平台的申请流程、.env环境变量填写、回调地址配置,以及连接验证与常见报错排查,帮助新手快速打通整条数据链路。
配置前先看:三大平台的接入难度差异
在动手之前,先了解各平台的"门槛",这决定了你的配置顺序:
| 平台 | 申请难度 | 账号要求 | 数据同步方式 |
|---|---|---|---|
| Garmin | ⚠️ 高:开发者计划目前暂停注册,且仅面向企业 | 需以法人实体(公司/机构)申请 | 仅 Webhook 推送 |
| Oura | ✅ 低:个人 Oura 账号即可 | 与 Oura App 同一账号 | 轮询 + Webhook(推荐 Webhook) |
| Fitbit | ✅ 低:任意免费 Fitbit 账号 | 无特殊权限要求 | 仅轮询拉取 |
💡新手建议:先用 Oura 或 Fitbit 跑通完整流程,再申请 Garmin。另外注意,Fitbit Web API 计划于 2026 年 9 月停用,新数据建议通过 Google Health 集成获取。
各平台的完整接入文档:docs/providers/garmin-api-integration.mdx、docs/providers/oura-api-integration.mdx、docs/providers/fitbit-api-integration.mdx。
第一步:在各平台开发者门户注册 OAuth 应用
所有平台的核心产物都是两样东西:Client ID和Client Secret。
Garmin 开发者计划(企业专属)
Garmin 是三者中门槛最高的:
- 必须以公司/机构身份申请(个人申请会被拒绝),建议使用公司域名邮箱
- 准备好公开网站和隐私政策页面链接
- 审核通过后在开发者门户创建Evaluation 类型应用,即可获得 Client ID + Client Secret
- 在 API Tools 中启用端点,并将推送地址统一设置为 Open Wearables 的 Webhook 端点
/api/v1/garmin/webhooks/push
⚠️重要提醒:Garmin 开发者计划目前处于暂停状态,无法创建新账号,已有账号可正常使用。
Oura 开发者门户(个人账号即可)
- 用个人 Oura 账号登录开发者门户,点击Create New
- 填写应用名称、联系方式、隐私政策,重点填写Redirect URIs(见下文"回调地址"章节)
- 勾选所需数据权限(Scopes),创建后在应用详情页获取Client ID和Client Secret
Fitbit 开发者中心(免费快速)
- 直接用 Fitbit 账号登录开发者中心
- 注册新应用,选择应用类型为Personal(开发测试)或Server(生产)
- 设置 Redirect URL 并注册,详情页即展示Client ID和Client Secret
第二步:在 .env 文件中填写 OAuth 凭证
拿到凭证后,将它们填入 Open Wearables 后端的环境变量文件backend/config/.env(可参考模板 backend/config/.env.example)。三个平台的核心配置如下:
#--- 公开 API 地址(所有 OAuth 回调地址都由它推导,务必设置正确)---# API_BASE_URL=https://your-domain.com #--- Garmin ---# GARMIN_CLIENT_ID=your-garmin-client-id GARMIN_CLIENT_SECRET=your-garmin-client-secret #--- Oura ---# OURA_CLIENT_ID=your-oura-client-id OURA_CLIENT_SECRET=your-oura-client-secret OURA_DEFAULT_SCOPE=personal daily heartrate workout session spo2 ring_configuration heart_health #--- Fitbit ---# FITBIT_CLIENT_ID=your-fitbit-client-id FITBIT_CLIENT_SECRET=your-fitbit-client-secret FITBIT_DEFAULT_SCOPE=activity heartrate sleep profile配置要点说明:
*_CLIENT_ID/*_CLIENT_SECRET:直接填门户中获取的凭证。Secret 等同密码,切勿写进代码仓库或日志*_DEFAULT_SCOPE:控制 OAuth 授权时向用户申请的权限范围,按需精简可减少授权页面的权限列表- 完整的变量定义与校验逻辑可查阅 backend/app/config.py
关键细节:API_BASE_URL 与 OAuth 回调地址
这是新手踩坑率最高的一步。Open Wearables 的 OAuth 回调地址统一由API_BASE_URL自动推导,格式为:
{API_BASE_URL}/api/v1/oauth/{平台名}/callback例如API_BASE_URL=https://your-domain.com时,Oura 的回调地址就是https://your-domain.com/api/v1/oauth/oura/callback。
必须保证三处完全一致:
- Open Wearables 的
API_BASE_URL - 各平台开发者门户中注册的 Redirect URI
- 服务器实际可访问的公网地址
🔑本地开发怎么办?部分平台(如 Oura)要求回调地址必须是公网 HTTPS。此时可用 ngrok 等隧道工具将本地服务暴露到公网,把 ngrok 地址同时填入
API_BASE_URL和各平台门户,参考文档 docs/dev-guides/ngrok-setup.mdx。
启动服务并验证连接
配置完成后,用 Docker Compose 一键启动(PostgreSQL、Redis、后端 API、Celery 全部拉起):
git clone https://gitcode.com/gh_mirrors/op/open-wearables cd open-wearables docker compose up -d启动后访问:
- 🌐 API 服务:
http://localhost:8000 - 🔐 开发者门户:
http://localhost:3000(登录后可生成 API Key 并在Settings → Providers中管理各平台的实时同步模式)
用户完成一次 OAuth 授权后,可通过接口查询连接状态:
curl http://localhost:8000/api/v1/users/{user_id}/connections \ -H "X-Open-Wearables-API-Key: YOUR_API_KEY"看到"status": "active"的记录即代表该平台连接成功,数据会自动开始同步。
常见问题排查清单
| 现象 | 可能原因 | 解决方法 |
|---|---|---|
| 授权页面报"redirect_uri 不匹配" | 门户注册地址与API_BASE_URL推导值不一致 | 以API_BASE_URL推导结果为准,更新门户中的 Redirect URI |
| Oura 回调 404 / 无法完成授权 | 本地用了http://localhost(要求公网 HTTPS) | 用 ngrok 暴露服务并同步更新门户地址 |
| Garmin 数据始终不进来 | API Tools 中端点未启用,或推送地址未指向 Webhook 端点 | 启用所有端点并统一配置 push 地址 |
| 列表接口显示某平台被禁用 | 未配置对应 Client 凭证 | 补齐.env中该平台的*_CLIENT_ID/*_CLIENT_SECRET后重启 |
总结
配置 Open Wearables 接入第三方平台的完整路径可以概括为四步:申请开发者资质 → 注册 OAuth 应用获取凭证 → 在.env中填写凭证与API_BASE_URL→ 启动并验证连接。各平台的差异化细节(如 Garmin 的企业申请、Oura 的 Webhook 实时模式)建议在动手前通读对应文档:
- 支持的全部平台列表:docs/providers/supported.mdx
- 各平台同步参数指南:docs/api-reference/guides/provider-setup.mdx
- 快速上手总览:docs/quickstart.mdx
跑通第一个平台后,其余平台的配置基本如法炮制——剩下的时间,就可以把统一的 AI-ready 健康数据接入你的应用了 🚀
【免费下载链接】open-wearablesSelf-hosted platform to unify wearable health data through one AI-ready API.项目地址: https://gitcode.com/gh_mirrors/op/open-wearables
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考