Tesla OAuth: redirect URI je /t-auth (oprava všude + Caddy rewrite)
All checks were successful
CI and deploy / migration-check (push) Successful in 26s
CI and deploy / deploy (push) Has been skipped

V dev portálu je registrováno https://ems.vojacek.eu/t-auth — docs i setup
skript diktovaly /tesla/callback (mismatch = invalid_auth_code / chybné
návody). Caddy blok nově servíruje callback stránku na /t-auth (rewrite).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Dusan Vojacek
2026-06-12 12:45:57 +02:00
parent 315bd0ca46
commit 5a10da57e9
2 changed files with 14 additions and 4 deletions

View File

@@ -54,6 +54,11 @@ ems.vojacek.eu {
} }
# Jednorázový OAuth callback (statická stránka zobrazí ?code=) # Jednorázový OAuth callback (statická stránka zobrazí ?code=)
# POZOR: redirect URI registrovaná v Tesla dev portálu je /t-auth.
handle /t-auth* {
rewrite * /tesla/callback.html
file_server
}
handle /tesla/callback* { handle /tesla/callback* {
file_server file_server
} }

View File

@@ -1,5 +1,10 @@
# Tesla Fleet API — napojení EMS (čtení SoC vozidla) # Tesla Fleet API — napojení EMS (čtení SoC vozidla)
> **REDIRECT URI registrovaná v dev portálu: `https://ems.vojacek.eu/t-auth`**
> (musí se znak po znaku shodovat v authorize URL, v token výměně i v portálu).
> Stránka s kódem se servíruje na /t-auth (Caddy rewrite); kód jde vždy
> zkopírovat i z adresního řádku (`?code=...`).
Cíl: po příjezdu EV přečíst skutečné SoC → `ev_session.energy_needed_wh` Cíl: po příjezdu EV přečíst skutečné SoC → `ev_session.energy_needed_wh`
přesně místo defaultu. Doména `ems.vojacek.eu` slouží JEN jako veřejná přesně místo defaultu. Doména `ems.vojacek.eu` slouží JEN jako veřejná
vizitka pro Tesla (cert + public key + jednorázový OAuth callback) — EMS vizitka pro Tesla (cert + public key + jednorázový OAuth callback) — EMS
@@ -14,14 +19,14 @@ bash /opt/ems-deploy/app/deploy/tesla/setup_tesla_domain.sh
Veřejné je pouze: Veřejné je pouze:
- `https://ems.vojacek.eu/.well-known/appspecific/com.tesla.3p.public-key.pem` - `https://ems.vojacek.eu/.well-known/appspecific/com.tesla.3p.public-key.pem`
- `https://ems.vojacek.eu/tesla/callback` (statická stránka zobrazí `?code=`) - `https://ems.vojacek.eu/t-auth` (statická stránka zobrazí `?code=`)
- vše ostatní → 404; certifikát řeší Caddy (Let's Encrypt) automaticky. - vše ostatní → 404; certifikát řeší Caddy (Let's Encrypt) automaticky.
## 2. Tesla developer portál (developer.tesla.com) ## 2. Tesla developer portál (developer.tesla.com)
Vytvořit aplikaci: Vytvořit aplikaci:
- **Allowed Origin:** `https://ems.vojacek.eu` - **Allowed Origin:** `https://ems.vojacek.eu`
- **Allowed Redirect URI:** `https://ems.vojacek.eu/tesla/callback` - **Allowed Redirect URI:** `https://ems.vojacek.eu/t-auth`
- **Scopes:** `openid offline_access vehicle_device_data` (čtení SoC stačí; - **Scopes:** `openid offline_access vehicle_device_data` (čtení SoC stačí;
`vehicle_charging_cmds` až kdybychom chtěli vozidlu poroučet my — teď řídí `vehicle_charging_cmds` až kdybychom chtěli vozidlu poroučet my — teď řídí
wallbox, ne auto) wallbox, ne auto)
@@ -49,7 +54,7 @@ curl -s -X POST https://fleet-api.prd.eu.vn.cloud.tesla.com/api/1/partner_accoun
``` ```
https://fleet-auth.prd.vn.cloud.tesla.com/oauth2/v3/authorize? https://fleet-auth.prd.vn.cloud.tesla.com/oauth2/v3/authorize?
response_type=code&client_id=$CLIENT_ID& response_type=code&client_id=$CLIENT_ID&
redirect_uri=https://ems.vojacek.eu/tesla/callback& redirect_uri=https://ems.vojacek.eu/t-auth&
scope=openid%20offline_access%20vehicle_device_data&state=ems scope=openid%20offline_access%20vehicle_device_data&state=ems
``` ```
Přihlásíš se Tesla účtem → redirect na callback stránku → zkopíruješ `code` Přihlásíš se Tesla účtem → redirect na callback stránku → zkopíruješ `code`
@@ -59,7 +64,7 @@ výměna za tokeny:
curl -s https://fleet-auth.prd.vn.cloud.tesla.com/oauth2/v3/token \ curl -s https://fleet-auth.prd.vn.cloud.tesla.com/oauth2/v3/token \
-d grant_type=authorization_code -d client_id=$CLIENT_ID \ -d grant_type=authorization_code -d client_id=$CLIENT_ID \
-d client_secret=$CLIENT_SECRET -d code=$CODE \ -d client_secret=$CLIENT_SECRET -d code=$CODE \
-d redirect_uri=https://ems.vojacek.eu/tesla/callback -d redirect_uri=https://ems.vojacek.eu/t-auth
# → access_token (krátký) + refresh_token (ULOŽIT — viz krok 5) # → access_token (krátký) + refresh_token (ULOŽIT — viz krok 5)
``` ```