Base de conhecimento
1000 perguntas frequentes, 500 tutoriais e vídeos explicativos. Aqui, você encontra apenas soluções!
Proteger um fluxo de áudio por meio de uma chave única (token)
Este guia explica como manter o controle sobre seus fluxos de rádio online MP3/AAC ou HLS, ativando a proteção por chave única (token), para decidir, por exemplo, se um ouvinte pode ou não ouvir sua rádio.
Introdução
- A cada conexão, você fará uma solicitação à API Infomaniak, que retornará um token exclusivo com uma duração de vida limitada e configurável.
- Este token autorizará qualquer pessoa que o possua a acessar o fluxo durante esse período.
- Você pode proteger um fluxo MP3/AAC ou HLS independentemente um do outro (o mesmo vale para a geolocalização).
- A ativação da restrição implica uma alteração na configuração do fluxo, o que pode levar alguns minutos para ser replicado nos servidores.
Proteger um fluxo de áudio com uma chave única
Para isso, basta ir para as configurações de restrições e ativar a proteção por token no fluxo que deseja proteger:
- Clique aqui para acessar o gerenciamento do seu produto no painel de controle Infomaniak (precisa de ajuda?).
- Clique diretamente no nome atribuído ao produto em questão:

- Clique em:
- no nome da rádio:

- ou em Restrições no menu lateral esquerdo para aplicar restrições a todo o produto:

- no nome da rádio:
- Ao selecionar
aacima, clique em Restrições no menu lateral esquerdo. - Se necessário, escolha HLS.
- Clique no menu de ação ⋮ localizado à direita do elemento em questão.
- Clique em Restrição por token:

Em seguida, ative a proteção.
Atenção: ao ativar esta opção, o acesso ao fluxo será bloqueado instantaneamente para novas conexões.Adapte os seus reprodutores para que considerem a restrição, conforme ilustrado no exemplo abaixo:
Criar um token de API Radio
Para ter acesso à API Radio, você deve primeiro autenticar-se usando um token de aplicação. Esta etapa só precisa ser realizada uma vez. Para criar este token de aplicação, consulte este outro guia.

O escopo é radio e a duração é ilimitada para evitar a necessidade de regenerar um código regularmente. Depois de gerar o token, copie-o para colá-lo no exemplo abaixo.
Exemplo de utilização em linguagem PHP
Para MP3/AAC ou HLS, o código pode ser praticamente o mesmo, sendo apenas a URL chamada no POST que muda na sua forma.
Cole abaixo o token gerado no lugar daquele que está indicado:
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 criar o token. A URL para criar o token é estruturada da seguinte forma:
- Para um fluxo MP3 / AAC
POST {{URL_11}}Exemplo para proteger https://newradiotest.ice.infomaniak.ch/newradiotest-128.aac: a rota será: https://api.infomaniak.com/1/radios/acl/streams/newradiotest-128.aac/token
- Para um fluxo HLS
POST {{URL_14}}Exemplo para proteger https://myradiostream.radiohls.infomaniak.com/myradiostream/manifest.m3u8, o endereço será: https://api.infomaniak.com/1/radios/acl/hls_streams/myradiostream/token
Exemplo no caso de MP3/AAC, lembre-se de 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
]
);
É importante notar que, se este código for gerado no momento do carregamento da página, o utilizador terá “window” segundos para iniciar a reprodução do fluxo. Após esse período, o token expirará e o fluxo não poderá ser iniciado, a menos que a página seja recarregada. Dependendo das suas necessidades e do seu caso de uso, será necessário ajustar este período da melhor forma possível.
Também será necessário substituir abaixo a URL de reprodução do seu fluxo, no lugar daquela indicada, mantendo o parâmetro $token no final. Por fim, exibimos o reprodutor (aqui, uma simples tag html5, mas podemos adicionar qualquer camada adicional, passando o token nos parâmetros $_GET da URL).
$streamUrl = "{{URL_18}}";
echo "<audio controls=""><source src="$streamUrl"></audio>";Link para esta FAQ: https://faq.infomaniak.com/2792
Esta seção de perguntas frequentes foi útil?