@callowcreation/basic-twitch-oauth
v2.0.5
Published
Intended to reduce the expected prerequisite experience required for implementing Twitch OAuth to use the Twitch API(s)
Downloads
43
Readme
Basic Twitch OAuth Flow
Intended to reduce the expected prerequisite experience required for implementing Twitch OAuth to use the Twitch API(s)
Motivation
The statements below are still a bit beyond your experiences and you need/want to use a Twitch API… is my motivation.
Twitch API(s) now require that some endpoint request must have an authorization in the header. To acquire an access token for a Twitch API you must be familiar with an authentication flow. The flows supported by Twitch are Implicit code, authorization code, and client credentials.
See Twitch Authentication Docs
Features
- Quick setup and usage.
Installation
Required reading Getting Started with the Twitch API
$ npm install @callowcreation/basic-twitch-oauth
Loading and configuration
A Node server is required, express is used here.
const express = require('express');
const crypto = require('crypto');
const qs = require('querystring');
const app = express();
const buffer = crypto.randomBytes(16);
const state = buffer.toString('hex');
const twitchOAuth = new TwitchOAuth({
client_id: process.env.CLIENT_ID,
client_secret: process.env.CLIENT_SECRET,
redirect_uri: process.env.REDIRECT_URI,
scopes: [
'user:edit:broadcast',
'moderation:read'
]
}, state);
// redirect_uri ends up here
app.get('/auth-callback', async (req, res) => {
const qs = require('querystring');
const req_data = qs.parse(req.url.split('?')[1]);
const code = req_data['code'];
const state = req_data['state'];
try {
twitchOAuth.confirmState(state);
await twitchOAuth.fetchToken(code);
res.redirect('/home');
} catch (err) {
console.error(err);
res.redirect('/failed');
}
});
Common Usage
app.get('/extensions', async (req, res) => {
const url: string = `https://api.twitch.tv/helix/users/extensions?user_id=${broadcaster_id}`;
const json = await twitchOAuth.getEndpoint(url);
res.status(200).json(json);
});
Handling exceptions
try {
const url: string = `https://api.twitch.tv/helix/moderation/enforcements/status?broadcaster_id=${broadcaster_id}`;
const data = [
{ msg_id: '0', msg_text: 'I killing this', user_id: '101223367' },
{ msg_id: '1', msg_text: 'that was a death blow', user_id: '75987197' }
];
const json = await twitchOAuth.postEndpoint(url, { data });
res.status(200).json(json);
} catch (error) {
console.error(error);
res.send(error_message);
}
Contact
License
MIT