Due to the order of paramters the scope was appened to the redirect URI which likely resulted in weirdness. The Redirect URI should be URI encoded. I’m assuming you have replaced your real URI with the example from the docs. So I’m thinking your real URI includes a ? somewhere.
(Also Client ID’s are considered public so no real need to waste time omitting/editing your code)
Try chat:read+chat:edit
So for example: using my GitHub examples ClientID:
https://id.twitch.tv/oauth2/authorize?client_id=hozgh446gdilj5knsrsxxz8tahr3koz&redirect_uri=https%3A%2F%2Fbarrycarlyon.github.io%2Ftwitch_misc%2Fauthentication%2Fimplicit_auth%2F&response_type=token&scope=chat:read+chat:edit
The state shouln’t be copy pasted from the documentation it’s an example, a state should be unique for each call, as it’s part of the CSRF protection you should employ.
This shows you have authed with any (or no) scopes at all. So checking this page will not help with debugging this issue.