1000 FAQ, 500 tutorial e video esplicativi. Qui ci sono delle soluzioni!
Assicurare un flusso MP3/AAC o HLS per singola chiave
Questa guida spiega come mantenere il controllo sui flussi di Streaming Radio MP3/AAC o HLS attivando la protezione a chiave singola (token) per decidere se un ascoltatore può ascoltare o meno la tua radio.
Preambolo
- Il principio è semplice: ad ogni connessione, effettuerai una richiesta all'API Infomaniak che ti restituirà in cambio un token unico con una durata limitata e parametrizzabile. Questo token permetterà a chiunque lo possiede di consumare il flusso durante questo periodo.
- È possibile proteggere un flusso MP3/AAC o HLS indipendentemente l'uno dall'altro (idem per la geolocalizzazione altrove).
- L'attivazione della restrizione comporta una modifica della configurazione del flusso che può richiedere alcuni minuti per essere replicata sui server.
Proteggere un flusso audio con chiave unica
Per fare questo, basta andare nelle impostazioni delle restrizioni e attivare la protezione token sul flusso che si desidera proteggere:
- Clicca qui per accedere alla gestione del prodotto sul Manager Infomaniak (Hai bisogno di aiuto?).
- Clicca direttamente sul nomeattribuito al prodotto in questione.
- Fare clic sul nome del flusso audio in questione.
- Clicca su Restrizioni nel menu laterale sinistro.
- Scegliere HLS se necessario.
- Clicca sul menu di azione â‹®situato a destra dell'elemento interessato.
- Clicca su Restrizioni per token:
Attivate quindi la protezione.
Attenzione, nel momento in cui si attiva questa opzione, l'accesso al feed verrà immediatamente bloccato per le nuove connessioni. Adatta i tuoi Player per tenere conto della restrizione, come illustrato nell'esempio seguente:
Creare un token API Radio
Per accedere all'API Radio, è necessario prima di tutto autenticarsi con un token applicazione. Questo passo deve essere fatto solo una volta. Per creare questo token di applicazione, leggere questa guida.
Il telescopio è radio e la durata di vita illimitata per evitare di dover rigenerare un codice in modo regolare. Una volta generato il token, copiarlo per incollarlo nell'esempio seguente.
Esempio di utilizzo in linguaggio PHP
Per MP3/AAC o HLS, il codice può essere sostanzialmente lo stesso, solo l'URL chiamato in POST cambia nella sua forma.
Incolla qui sotto il token generato al posto di quello indicato:
if (!defined('API_TOKEN')) {
define('API_TOKEN', 'AYF5lSh3c7Xy5974Fs12RTkTThujT-L9R4Xk2ZfGyP6sV7QqJ1oC3jD8nFtKzIxUeMw5oNzR6');
}
/**
* Fonction générique pour executer des requêtes cURL
*
* @param string $method Méthode HTTP (GET, POST, PUT, etc...)
* @param string $url Url de l'api a requêter
* @param array $headers Liste des en-têtes HTTP (l'autorisation doit être passée ici avec un ['Authorization: Bearer ']
* @param array $payload Un tableau contenant les données pour créer un token
* @return mixed
*/
function request(string $method, string $url, array $headers = [], array $payload = []): mixed{
// prepare options array
$opts = [
CURLOPT_HTTPHEADER => $headers,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_URL => $url,
CURLOPT_CUSTOMREQUEST => strtoupper($method),
];
// add payload if relevant
if ($payload && $method !== 'GET') {
$opts[CURLOPT_POSTFIELDS] = json_encode($payload);
}
$ch = curl_init();
curl_setopt_array($ch, $opts);
$result = curl_exec($ch);
if(curl_errno($ch)){
throw new Exception(curl_error($ch));
}
$data = json_decode($result, true);
if ($data['result'] === 'error') {
throw new Exception($data['error']['description'] ?? 'an error occured');
}
return $data['data'];
}
Creeremo il token, l'URL di creazione del token si decompone come segue:
- Per un flusso MP3 / AAC
POST https://api.infomaniak.com/1/radios/acl/streams/mountpoint.mp3/token
Esempio per proteggere https://newradiotest.ice.infomaniak.ch/newradiotest-128.aac
La strada sarà : https://api.infomaniak.com/1/radios/acl/streams/newradiotest-128.aac/token
- Per un flusso HLS
POST https://api.infomaniak.com/1/radios/acl/hls_streams/<stream>/token
Esempio per proteggere https://myradiostream.radiohls.infomaniak.com/myradiostream/manifest.m3u8
La strada sarà : https://api.infomaniak.com/1/radios/acl/hls_streams/myradiostream/token
Esempio nel caso di MP3 / AAC, considera di regolare:
$token = request(
'POST',
'https://api.infomaniak.com/1/radios/acl/streams/newradiotest-128.aac/token',
// en-tête d'authorization
[
'Authorization: Bearer ' . API_TOKEN,
'Content-Type: application/json',
],
/**
* payload pour créer le token, vous pouvez passer les valeurs suivantes
* window | 300 | optionnel | durée de validité du token (default: 5 minutes)
*/
[
'window' => 3600, // 1h validity
]
);
È importante notare che se questo codice viene generato al momento del caricamento della pagina, l'ascoltatore avrà "window" secondi per avviare la riproduzione del feed. Dopo questo periodo, il token scadrà e il feed non potrà più essere avviato a meno che la pagina non venga ricaricata. A seconda delle vostre esigenze e del vostro caso d'uso, sarà necessario regolare questo tempo nel miglior modo possibile.
Dovrai anche sostituire di seguito l'URL di lettura del tuo feed al posto di quello indicato mantenendo l'impostazione $token
Alla fine. Infine, viene visualizzato il Player (qui un semplice tag html5, ma naturalmente si può aggiungere qualsiasi strato superiore dopo che il token è passato nelle impostazioni $_GET
dell'url).
$streamUrl = "https://newradiotest.ice.infomaniak.ch/newradiotest-128.aac?$token";
echo "<audio controls=""><source src="$streamUrl"></audio>";