18 de setembro de 2022 • 2 min de leitura
Twitch API
Integração com a Twitch API
Tutorial rápido de como gerar seu OAuth Token e consumir a Twitch API.
Criando seu App no Console da Twitch
- Abra o Console na Aba Aplicativos;
- Clique em ”+ Registre seu aplicativo”;
- Preencha os campos com as informações do seu App;
- No campo URLs de redirecionamento OAuth, para testar localmente você pode colocar o http://localhost:3000, a porta não precisa ser necessariamente a 3000, use a mesma que você setou no seu projeto;
- Clique em Criar;
- Copie o Client ID;
- Copie também o Client Secret (Clicando em Novo Segredo para gerar ele).
Gerando seu OAuth Token
- No seu código faça uma chamada POST para https://id.twitch.tv/oauth2/token passando o client_id, client_secret e grant_type: ‘client_credentials’.
- Se tudo estiver ok você irá receber uma resposta neste formato:
{
"access_token": "jostpf5q0puzmxmkba9iyug38kjtg",
"expires_in": 5011271,
"token_type": "bearer"
}
Consumindo a Twitch API - Chamada de exemplo para obter os top games
- Faça uma chamada GET para https://api.twitch.tv/helix/games/top passando no header da requisição:
- client_id como ‘Client-Id’;
- access_token como ‘Authorization’ tendo seu valor como Bearer ${seu_access_token}.
- Exemplo de resposta:
{
"data": [
{
"id": "493057",
"name": "PLAYERUNKNOWN'S BATTLEGROUNDS",
"box_art_url": "https://static-cdn.jtvnw.net/ttv-boxart/PLAYERUNKNOWN%27S%20BATTLEGROUNDS-{width}x{height}.jpg"
},
// ...
],
"pagination":{
"cursor":"eyJiIjpudWxsLCJhIjp7Ik9mZnNldCI6MjB9fQ=="
}
}
- Exemplos de código:
app.post('/twitch/token', async (_: Request, res: Response) => {
try {
const { data } = await axios.post('https://id.twitch.tv/oauth2/token', {
client_id: process.env.TWITCH_CLIENT_ID,
client_secret: process.env.TWITCH_CLIENT_SECRET,
grant_type: 'client_credentials',
});
app.set('auth', data.access_token);
return res.status(200).json(data);
} catch (error) {
return res.status(500).json({
message: 'Error while trying to get Twitch token',
});
}
});
app.get('/twitch/top-games', async (_: Request, res: Response) => {
try {
const { data } = await axios.get('https://api.twitch.tv/helix/games/top', {
headers: {
'Authorization': `Bearer ${app.get('auth')}`,
'Client-Id': String(process.env.TWITCH_CLIENT_ID),
},
});
return res.status(200).json(data?.data);
} catch (error) {
return res.status(500).json({
message: 'Error while fetching top games',
});
}
});
app.get('/twitch/users/:login', async (req: Request, res: Response) => {
try {
const login = String(req.params.login);
const { data } = await axios.get(`https://api.twitch.tv/helix/users?login=${login}`, {
headers: {
'Authorization': `Bearer ${app.get('auth')}`,
'Client-Id': String(process.env.TWITCH_CLIENT_ID),
},
});
return res.status(200).json(data?.data[0]);
} catch (error) {
return res.status(500).json({
message: 'Error while fetching user info',
});
}
});
app.get('/twitch/users/follows/:userId', async (req: Request, res: Response) => {
try {
const userId = String(req.params.userId);
const { data } = await axios.get(`https://api.twitch.tv/helix/users/follows?from_id=${userId}`, {
headers: {
'Authorization': `Bearer ${app.get('auth')}`,
'Client-Id': String(process.env.TWITCH_CLIENT_ID),
},
});
return res.status(200).json(data?.data);
} catch (error) {
return res.status(500).json({
message: 'Error while fetching followers',
});
}
});
Estas são algumas das muitas possibilidades de integração com a Twitch API, você pode encontrar mais informações na documentação.
Fontes: