Integrazione YouTube Live: OAuth squadra, canale piattaforma Light e UI.
Collegamento da Dettagli squadra e admin per il refresh token Match Live TV; API e app mobile allineate ai piani Light/Full. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
89
docs/YOUTUBE_SETUP.md
Normal file
89
docs/YOUTUBE_SETUP.md
Normal file
@@ -0,0 +1,89 @@
|
||||
# Integrazione YouTube Live
|
||||
|
||||
Match Live TV supporta due modalità YouTube, legate al piano società:
|
||||
|
||||
| Piano | Modalità | Dove va la diretta |
|
||||
|-------|----------|-------------------|
|
||||
| **Premium Light** | `matchlivetv_light` | Canale YouTube **Match Live TV** (gestito da te) |
|
||||
| **Premium Full** | `team` | Canale YouTube **della società** (OAuth del club) |
|
||||
|
||||
Flusso tecnico: telefono → RTMP MediaMTX → (relay ffmpeg) → YouTube Live.
|
||||
|
||||
---
|
||||
|
||||
## 1. Google Cloud Console
|
||||
|
||||
1. [Google Cloud Console](https://console.cloud.google.com/) → nuovo progetto o progetto esistente.
|
||||
2. **API e servizi → Libreria** → abilita **YouTube Data API v3**.
|
||||
3. **API e servizi → Credenziali** → **Crea credenziali → ID client OAuth**:
|
||||
- Tipo: **Applicazione web**
|
||||
- URI di reindirizzamento autorizzati:
|
||||
- `https://www.matchlivetv.it/api/v1/youtube/callback`
|
||||
- `http://localhost:3000/api/v1/youtube/callback` (solo sviluppo)
|
||||
4. Copia **Client ID** e **Client Secret** in `infra/.env`:
|
||||
|
||||
```bash
|
||||
YOUTUBE_CLIENT_ID=....apps.googleusercontent.com
|
||||
YOUTUBE_CLIENT_SECRET=GOCSPX-...
|
||||
YOUTUBE_REDIRECT_URI=https://www.matchlivetv.it/api/v1/youtube/callback
|
||||
```
|
||||
|
||||
5. **Schermata di consenso OAuth**: stato di pubblicazione o utenti di test con gli account Google che collegheranno i canali.
|
||||
|
||||
---
|
||||
|
||||
## 2. Canale Match Live TV (Premium Light)
|
||||
|
||||
Serve un **refresh token** del canale YouTube ufficiale Match Live TV.
|
||||
|
||||
1. Una tantum: apri (da browser loggato sul canale Match Live TV):
|
||||
|
||||
`https://www.matchlivetv.it/admin/youtube/platform`
|
||||
|
||||
(solo admin tecnico) oppure usa lo script OAuth di Google con gli stessi scope dell’app.
|
||||
|
||||
2. Salva in produzione (`/opt/matchlivetv/infra/.env`):
|
||||
|
||||
```bash
|
||||
YOUTUBE_PLATFORM_REFRESH_TOKEN=1//0e...
|
||||
```
|
||||
|
||||
3. Riavvia Rails. Le società **Premium Light** potranno scegliere «YouTube» in app senza collegare un canale proprio.
|
||||
|
||||
Se manca, l’app userà solo Match Live TV (HLS) e mostrerà YouTube disabilitato per Light.
|
||||
|
||||
---
|
||||
|
||||
## 3. Canale società (Premium Full)
|
||||
|
||||
1. Titolare società → login su matchlivetv.it
|
||||
2. **Società → squadra → Dettagli** → sezione **YouTube**
|
||||
3. **Collega canale YouTube** → consenso Google → ritorno al sito
|
||||
4. Da app mobile: wizard trasmissione → piattaforma **YouTube Live**
|
||||
|
||||
Revoca: pulsante **Scollega canale** nella stessa sezione.
|
||||
|
||||
---
|
||||
|
||||
## 4. Variabili opzionali (sviluppo)
|
||||
|
||||
```bash
|
||||
# Se OAuth non configurato: broadcast finto + relay disattivato
|
||||
YOUTUBE_MOCK_STREAM_KEY=mock-stream-key
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 5. Verifica
|
||||
|
||||
- Premium Full: dopo collegamento, `GET /api/v1/teams/:id` → `youtube_connected: true`, `youtube_selectable: true`
|
||||
- Premium Light: con `YOUTUBE_PLATFORM_REFRESH_TOKEN` → `youtube_selectable: true` anche senza OAuth squadra
|
||||
- Avvia diretta YouTube da app → in admin session compare broadcast ID → link YouTube Studio
|
||||
|
||||
---
|
||||
|
||||
## 6. Produzione
|
||||
|
||||
- `YOUTUBE_REDIRECT_URI` deve essere **esattamente** quello registrato in Google (HTTPS, dominio pubblico).
|
||||
- Il relay ffmpeg gira nel container MediaMTX (`runOnReady`).
|
||||
- Apri RTMP **1935** sul router verso il server.
|
||||
Reference in New Issue
Block a user