Base de conocimientos
1 000 FAQ, 500 tutoriales y vídeos explicativos. ¡Aquí sólo hay soluciones!
Proteger un flujo de audio mediante una clave única (token)
Esta guía explica cómo mantener el control sobre sus flujos de Radio por Internet MP3/AAC o HLS activando la protección mediante una clave única (token) para decidir, por ejemplo, si un oyente puede escuchar su radio o no.
Introducción
- En cada conexión, realizará una solicitud a la API de Infomaniak, que le devolverá un token único con una duración limitada y configurable.
- Este token autorizará a cualquier persona que lo posea a acceder al flujo durante ese período.
- Puede proteger un flujo MP3/AAC o HLS de forma independiente (lo mismo ocurre con la geolocalización).
- La activación de la restricción implica un cambio en la configuración del flujo, lo que puede tardar unos minutos en replicarse en los servidores.
Proteger un flujo de audio mediante una clave única
Para ello, basta con dirigirse a la configuración de restricciones y activar la protección mediante token en el flujo que desea proteger:
- Haga clic aquí para acceder a la gestión de su producto en el Panel de control de Infomaniak (¿necesita ayuda?).
- Haga clic directamente en el nombre asignado al producto en cuestión:

- Haga clic en:
- el nombre de la emisora de radio:

- o en Restricciones en el menú lateral izquierdo para aplicar restricciones al producto completo:

- el nombre de la emisora de radio:
- Al seleccionar
aen el paso anterior, haga clic en Restricciones en el menú lateral izquierdo. - Seleccione HLS si es necesario.
- Haga clic en el menú de acciones ⋮ situado a la derecha del elemento correspondiente.
- Haga clic en Restricción por token:

A continuación, active la protección.
Atención, al activar esta opción, el acceso al flujo se bloqueará instantáneamente para las nuevas conexiones.Adapte sus reproductores para tener en cuenta la restricción, como se muestra en el ejemplo a continuación: 
Crear un token de API de Radio
Para acceder a la API de Radio, primero debe autenticarse mediante un token de aplicación. Este paso solo debe realizarse una vez. Para crear este token de aplicación, consulte esta otra guía.

El ámbito es radio y la duración es ilimitada para evitar tener que regenerar un código de forma periódica. Una vez generado el token, cópielo para pegarlo en el ejemplo que se muestra a continuación.
Ejemplo de uso en lenguaje PHP
Para MP3/AAC o HLS, el código puede ser prácticamente el mismo; solo la URL que se utiliza en la solicitud POST cambia en su formato.
Pegue a continuación el token generado en lugar del que se indica:
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'];
}
Vamos a crear el token. La URL para crear el token se compone de la siguiente manera:
- Para un flujo MP3 / AAC
POST {{URL_11}}Ejemplo para proteger https://newradiotest.ice.infomaniak.ch/newradiotest-128.aac: la ruta será: https://api.infomaniak.com/1/radios/acl/streams/newradiotest-128.aac/token
- Para una transmisión HLS
POST {{URL_14}}Ejemplo para proteger https://myradiostream.radiohls.infomaniak.com/myradiostream/manifest.m3u8, la ruta será: https://api.infomaniak.com/1/radios/acl/hls_streams/myradiostream/token
Ejemplo en el caso de MP3/AAC, recuerde ajustar:
$token = request(
'POST',
'{{URL_17}}',
// 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
]
);
Es importante tener en cuenta que, si este código se genera al cargar la página, el usuario tendrá "window" segundos para iniciar la reproducción del flujo. Una vez transcurrido este tiempo, el token caducará y ya no se podrá iniciar la reproducción del flujo a menos que se vuelva a cargar la página. Según sus necesidades y su caso de uso, será necesario ajustar este tiempo de la mejor manera posible.
También deberá reemplazar a continuación la URL de reproducción de su flujo por la que se indica, manteniendo el parámetro $token al final. Y, por último, se muestra el reproductor (aquí, una simple etiqueta html5, pero, por supuesto, se puede añadir cualquier capa adicional después, pasando el token en los parámetros $_GET de la URL).
$streamUrl = "{{URL_18}}";
echo "<audio controls=""><source src="$streamUrl"></audio>";Enlace a esta FAQ: https://faq.infomaniak.com/2792
¿Le ha sido útil esta FAQ?