Trying to subscribe to an EventSub using WebSockets gives an 403 error message

That sounds correct.

But thats not an “app id”, and app id is more the client_id than anything. Applications don’t have a user attached to them.

And the owner of the clientID is irrelevant.

So your call looks like?

As it should of worked, as long as the user_id is the ID of the user you have authenticated as.
And the target channel doesn’t have the user you are reading chat as banned.

But this is irrelevant to your use case (as a game running client side).

You authed in as bob you should be able to connect to whichever channel you want, (as long as bob is not banned in that channel, and you are below the concurrent join limit)

To connect to your own channel to read chat, that would be correct

This type channel.chat.message works as follows

conditions:

  • broadcaster_user_id - the chat you want to read
  • user_id - the user you want to read chat as and thus oAuth’ed as.

(For Straight websockets)

Becuase you authenticated as bob and said I want to read chat as bob and then said I want to read the chat channel of bob

And you only have the permission of bob

bob here being the user you oAuth-enticated as (not but could be the owner of the application)

So for example for conduits

I barrycarlyon of ID 15185913 own b2z6u6b4sg6p84d3pq1ykcehlk1vhh9
I get cohhcarnage of ID 26610234 to authenticate to that clientID
And I get the channelbot CohhilitionBot of ID 45522171 to authentcate to that ClientID

Now the bot 45522171 can connect to 26610234 channel via conduits, (as in this example I’m using condiuts)

And my ID (the owner of the application) comes up no where.

Thats why I linked my reference example I wrote so you can compare

So here when using websockets you’ll only be able to authenticate as the broadcaster playing the game.

So I would, in my game,

  • present an oAuth prompt
  • authenticate the broadcaster with chat read only scopes not send
  • connect to and read chat as the broadcaster, so broadcaster_user_id and user_id are the same, as I’m connecting to the broadcasters chat as the broadcasters
  • send any prompts or nudges for chat to do things in the game via video not via chat, so I don’t have to request write scopes.

The person running the game will only have the permissions of themself available and no other users.