4.4 KiB
Node-RED_Twitch_EventSub
Node-RED flow to subscribe, receive and respond to Twitch webhook
Note
- My Twitch channel
- To support me
- It is HIGHLY recommended to secure your Node-RED flow (your server will be exposed to the internet) !!
- EventSub doc
- This Flow is compatible with the Twitch API
Prerequisites
-
Node-RED running on port 443 with HTTPS enabled OR a ngrok auth token
-
Twitch APP Client ID
-
Twitch APP Client Secret
Dependencies
- node-red-dashboard
- node-red-contrib-crypto-js-dynamic
- Optional : node-red-contrib-ngrok
For ngrok users
- Create a free account on ngrok
- Save your AuthToken
- Install the ngrok node on Node-RED
- Drag and drop a ngrok node on your flow
- Setup the node using your AuthToken
- Open a tunnel and save the URL
Twitch Setup
- Create an APP and save your APP ID and Secret
- Add the following URL using your domain name or ngrok tunnel URL

Note : As your Node-RED should be secured with http basic auth the URI are https://admin:password@xxxxxxxxx.eu.ngrok.io or https://admin:password@your.domain.name with "admin" and "password" corresponding to you Node-RED auth.
Node-RED Setup
-
Edit the API Settings node with your
- Twitch client ID
- Twitch client secret
- Sub secret : a password (defined by the user) to validate the Twitch event signature
- Twitch channel
- Sub URI : your Node-RED server name or ngrok tunnel URL WITHOUT "HTTPS://" (Ex : your.domain.name or xxxxxxxxxxx.ngrok.io and admin:password@your.domain.name or admin:password@xxxxxxxxxxx.ngrok.io for a properly secured server)
- Scopes (space-separated)

-
Go to the Node-RED dashboard (https://your.domain.name/ui or https://xxxxxxxxxx.ngrok.io/ui)
-
Generate an APP token and USER token by clicking on Auhtorize APP and Authorize USER (will requires to loggin with your Twitch account and accept the scopes)
-
Optional : you can test the validity and expiration of the Token using "Validate" nodes on the Node-RED editor
-
Clic on the "Get channel ID" inject node
Subscribe
Unsubscribe
Events
-
When an event is posted to /webhook the JSON will be validated using the "Sub secret" code and sent to the second flow "Reponse"
-
The "Inject" node and "Fake event" function can be removes as they are only used for Testing/Debug purposes
-
Retrieve and use the events informations by connectig your node/function to the annotated functions

HAVE FUN

