Twitch API retornando 403 com autorização e ID do cliente?

Oct 13 2020

Estou tentando listar streams Twitch ativos de um ID de jogo.

Meu código funciona da seguinte maneira:

$ch = curl_init(); $URL = 'https://api.twitch.tv/helix/streams?game_id=3412';
$X = [ 'Authorization: Bearer {Client Secret}', 'Client-ID: {Client ID}', ]; curl_setopt($ch, CURLOPT_URL, $URL); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_HTTPHEADER, $X);

$result = curl_exec($ch);

O resultado deve ser streams para Grand Theft Auto III, no entanto, a resposta que recebo é esta:

object(stdClass)[121]
  public 'error' => string 'Unauthorized' (length=12)
  public 'status' => int 401
  public 'message' => string 'Invalid OAuth token' (length=19)

Eu gerei um novo segredo e verifiquei que meu ID de cliente estava correto. Tenho seguido esta documentação:https://dev.twitch.tv/docs/api/reference#get-streams

Coçando a cabeça aqui, já fiz isso antes na API antiga. Encontrei várias pessoas com o mesmo problema, mas não conseguiram replicar nenhuma de suas soluções. Alguem tem alguma idéia? Obrigado.

Respostas

1 3ventic Oct 13 2020 at 10:44

Você precisa obter um token de autorização , que é separado do segredo do cliente , para uso no cabeçalho de autorização. O fluxo de credenciais do cliente é o mais fácil dos três com suporte e adequado para chamadas de API de back-end que não são feitas em nome de nenhum usuário em particular.