Make YouTube auth optional and non-blocking; manual stream key is baseline go-live path
This commit is contained in:
@@ -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:
|
||||||
|
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
Reference in New Issue
Block a user