Make YouTube auth optional and non-blocking; manual stream key is baseline go-live path

This commit is contained in:
2026-08-04 10:28:01 -07:00
parent 8aebbff318
commit d4945f4fd0
2 changed files with 12 additions and 2 deletions
+5 -2
View File
@@ -13,17 +13,20 @@
--- ---
## TASK 2 — YouTube OAuth2 Authentication ## TASK 2 — YouTube OAuth2 Authentication (optional, non-blocking)
**Goal:** Fully working Google OAuth2 flow — user clicks "YouTube", browser opens, authorization callback lands, channel info is stored. **Goal:** Fully working Google OAuth2 flow — user clicks "YouTube", browser opens, authorization callback lands, channel info is stored.
**Design constraint:** Sign-in must NEVER block core usage. Users can go live with a manual stream key, build scenes, and record without authenticating. OAuth is an enhancement — it unlocks live chat, broadcast creation, scheduling, and YouTube-side health — not a prerequisite.
### Requirements: ### Requirements:
1. **Google Cloud OAuth credentials** — client ID + secret (user provides; needs "Localhost" redirect URI) 1. **Google Cloud OAuth credentials** — client ID + secret (user provides; needs "Localhost" redirect URI)
2. **Local HTTP listener**`HttpListener` on `http://localhost:PORT/oauth2/callback` to catch the redirect 2. **Local HTTP listener**`HttpListener` on `http://localhost:PORT/oauth2/callback` to catch the redirect
3. **Browser launch** — open the authorization URL in the default browser 3. **Browser launch** — open the authorization URL in the default browser
4. **Token persistence** — store access/refresh tokens securely (Windows DPAPI), reload on startup 4. **Token persistence** — store access/refresh tokens securely (Windows DPAPI), reload on startup
5. **UI state** — account name/avatar shown when connected, connection status reflected 5. **UI state** — account name/avatar shown when connected; "sign in (optional)" affordance, never a gate
6. **Stream key entry stays manual** — OAuth does not replace the manual stream key path
### Tests: ### Tests:
+7
View File
@@ -50,3 +50,10 @@ Apply this to every UI decision:
- Prefilled YouTube defaults (RTMP URL, bitrate, resolution, latency) - Prefilled YouTube defaults (RTMP URL, bitrate, resolution, latency)
- Visual/drag-and-drop scene building over property panels - Visual/drag-and-drop scene building over property panels
- Every action produces a visible outcome — no dead ends - Every action produces a visible outcome — no dead ends
## Auth is optional, never a gate
YouTube OAuth2 sign-in must NEVER block core usage. Users can go live with a manual stream key,
build scenes, and record without authenticating. OAuth is an enhancement — it unlocks live chat,
broadcast creation, scheduling, and YouTube-side health — not a prerequisite. Treat the sign-in
button as "sign in (optional)", never as a requirement to use the app.