# Missing scope: channel:read:subscriptions or channel\_subscriptions

**URL:** <https://discuss.dev.twitch.com/t/missing-scope-channelsubscriptions-or-channel-subscriptions/32486>\
**Category:** API\
**Created:** [July 6, 2021, 5:49pm UTC](https://discuss.dev.twitch.com/t/missing-scope-channelsubscriptions-or-channel-subscriptions/32486 "2021-07-06T17:49:12Z")\
**Posts on this page:** 16\
**Page:** 1

<div class="post-metadata">

**Author:** ![Teyz](https://d3ovvz0v2ajtpu.cloudfront.net/user_avatar/discuss.dev.twitch.com/teyz/32/12749_2.png) [@Teyz](https://discuss.dev.twitch.com/u/Teyz)\
**Post date:** [July 6, 2021, 5:49pm UTC](https://discuss.dev.twitch.com/t/missing-scope-channelsubscriptions-or-channel-subscriptions/32486/1 "2021-07-06T17:49:12Z")

</div>

Hello here !

I’m working an nodejs API to retrieve subscribe but I have a problem.

I have already recovered my berear token with : [https://id.twitch.tv/oauth2/token](https://id.twitch.tv/oauth2/token) with scope : channel:read:subscriptions

But when i call : [https://api.twitch.tv/helix/subscriptions](https://api.twitch.tv/helix/subscriptions) i have this message :

“message”: “Missing scope: channel:read:subscriptions or channel\_subscriptions”

I don’t understand why I have this message 😕

Thanks mate

---

<div class="post-metadata">

**Author:** ![Dist](https://d3ovvz0v2ajtpu.cloudfront.net/user_avatar/discuss.dev.twitch.com/dist/32/7192_2.png) [@Dist](https://discuss.dev.twitch.com/u/Dist)\
**Post date:** [July 6, 2021, 5:51pm UTC](https://discuss.dev.twitch.com/t/missing-scope-channelsubscriptions-or-channel-subscriptions/32486/2 "2021-07-06T17:51:28Z")

</div>

Did you use the correct OAuth flow for a user token? It must be the Authorization Code, or Implicit flow, client credentials will not work.

---

<div class="post-metadata">

**Author:** ![Teyz](https://d3ovvz0v2ajtpu.cloudfront.net/user_avatar/discuss.dev.twitch.com/teyz/32/12749_2.png) [@Teyz](https://discuss.dev.twitch.com/u/Teyz)\
**Post date:** [July 6, 2021, 5:53pm UTC](https://discuss.dev.twitch.com/t/missing-scope-channelsubscriptions-or-channel-subscriptions/32486/3 "2021-07-06T17:53:38Z")

</div>

I used this :

 ![image](https://d2opxh93rbxzdn.cloudfront.net/original/2X/6/6415877202b3e7a26b9a3f7dfcb62adc9a382096.png)

I want to get all user subs for my nodejs API

---

<div class="post-metadata">

**Author:** ![Dist](https://d3ovvz0v2ajtpu.cloudfront.net/user_avatar/discuss.dev.twitch.com/dist/32/7192_2.png) [@Dist](https://discuss.dev.twitch.com/u/Dist)\
**Post date:** [July 6, 2021, 5:55pm UTC](https://discuss.dev.twitch.com/t/missing-scope-channelsubscriptions-or-channel-subscriptions/32486/4 "2021-07-06T17:55:44Z")

</div>

You can’t use the Client Credentials flow. That is for an App token, and does not represent a user.

To access private information, such as a channels subscriber list, you need that broadcaster to go through the Authorization Code flow if making requests on your server, or the Implicit flow if making requests client-side from a browser.

---

<div class="post-metadata">

**Author:** ![Teyz](https://d3ovvz0v2ajtpu.cloudfront.net/user_avatar/discuss.dev.twitch.com/teyz/32/12749_2.png) [@Teyz](https://discuss.dev.twitch.com/u/Teyz)\
**Post date:** [July 6, 2021, 5:57pm UTC](https://discuss.dev.twitch.com/t/missing-scope-channelsubscriptions-or-channel-subscriptions/32486/5 "2021-07-06T17:57:32Z")

</div>

In any case, the user will necessarily have to have a form to accept ?

---

<div class="post-metadata">

**Author:** ![Dist](https://d3ovvz0v2ajtpu.cloudfront.net/user_avatar/discuss.dev.twitch.com/dist/32/7192_2.png) [@Dist](https://discuss.dev.twitch.com/u/Dist)\
**Post date:** [July 6, 2021, 5:59pm UTC](https://discuss.dev.twitch.com/t/missing-scope-channelsubscriptions-or-channel-subscriptions/32486/6 "2021-07-06T17:59:02Z")

</div>

Yes, for all User token flows it requires sending the user the Twitch auth URL so that they can see what permissions (scopes) you are requesting, and that they can explicitly allow/deny that connection to your app.

---

<div class="post-metadata">

**Author:** ![Teyz](https://d3ovvz0v2ajtpu.cloudfront.net/user_avatar/discuss.dev.twitch.com/teyz/32/12749_2.png) [@Teyz](https://discuss.dev.twitch.com/u/Teyz)\
**Post date:** [July 6, 2021, 6:05pm UTC](https://discuss.dev.twitch.com/t/missing-scope-channelsubscriptions-or-channel-subscriptions/32486/7 "2021-07-06T18:05:25Z")

</div>

Ok thanks !

---

<div class="post-metadata">

**Author:** ![Teyz](https://d3ovvz0v2ajtpu.cloudfront.net/user_avatar/discuss.dev.twitch.com/teyz/32/12749_2.png) [@Teyz](https://discuss.dev.twitch.com/u/Teyz)\
**Post date:** [July 6, 2021, 7:14pm UTC](https://discuss.dev.twitch.com/t/missing-scope-channelsubscriptions-or-channel-subscriptions/32486/8 "2021-07-06T19:14:39Z")

</div>

@Dist I have a stupid question but I didn’t find where I can get my broadcaster\_id ?

---

<div class="post-metadata">

**Author:** ![Dist](https://d3ovvz0v2ajtpu.cloudfront.net/user_avatar/discuss.dev.twitch.com/dist/32/7192_2.png) [@Dist](https://discuss.dev.twitch.com/u/Dist)\
**Post date:** [July 6, 2021, 7:29pm UTC](https://discuss.dev.twitch.com/t/missing-scope-channelsubscriptions-or-channel-subscriptions/32486/9 "2021-07-06T19:29:19Z")

</div>

You can use the [Get Users](https://dev.twitch.tv/docs/api/reference#get-users), or [Validate Token](https://dev.twitch.tv/docs/authentication#validating-requests) endpoints with your OAuth token, and it will return the user associated with that token, including their `id`.

---

<div class="post-metadata">

**Author:** ![Teyz](https://d3ovvz0v2ajtpu.cloudfront.net/user_avatar/discuss.dev.twitch.com/teyz/32/12749_2.png) [@Teyz](https://discuss.dev.twitch.com/u/Teyz)\
**Post date:** [July 6, 2021, 7:31pm UTC](https://discuss.dev.twitch.com/t/missing-scope-channelsubscriptions-or-channel-subscriptions/32486/10 "2021-07-06T19:31:42Z")

</div>

Yeah thankss !

---

<div class="post-metadata">

**Author:** ![Teyz](https://d3ovvz0v2ajtpu.cloudfront.net/user_avatar/discuss.dev.twitch.com/teyz/32/12749_2.png) [@Teyz](https://discuss.dev.twitch.com/u/Teyz)\
**Post date:** [July 14, 2021, 11:55am UTC](https://discuss.dev.twitch.com/t/missing-scope-channelsubscriptions-or-channel-subscriptions/32486/11 "2021-07-14T11:55:01Z")

</div>

@Dist  
I have an other question, I want to create a EventSub for channel.subscribe but I dont know how to generate the secret in transport  
 ![image](https://d2opxh93rbxzdn.cloudfront.net/original/2X/a/a58088cb68e8fc294adfe3839ba1dab0d719444a.png)  
It always return me a  
 ![image](https://d2opxh93rbxzdn.cloudfront.net/original/2X/7/719b5ac8b27405c143f55c48fda3c3e1841a77a8.png)  
Thanks for helping !

---

<div class="post-metadata">

**Author:** ![Dist](https://d3ovvz0v2ajtpu.cloudfront.net/user_avatar/discuss.dev.twitch.com/dist/32/7192_2.png) [@Dist](https://discuss.dev.twitch.com/u/Dist)\
**Post date:** [July 14, 2021, 12:13pm UTC](https://discuss.dev.twitch.com/t/missing-scope-channelsubscriptions-or-channel-subscriptions/32486/12 "2021-07-14T12:13:28Z")

</div>

The secret is whatever you want it to be. Whatever string you define as the secret is what Twitch will use to sign each notification they send to you, that way you can use that secret so validate all notifications.

---

<div class="post-metadata">

**Author:** ![Teyz](https://d3ovvz0v2ajtpu.cloudfront.net/user_avatar/discuss.dev.twitch.com/teyz/32/12749_2.png) [@Teyz](https://discuss.dev.twitch.com/u/Teyz)\
**Post date:** [July 14, 2021, 12:36pm UTC](https://discuss.dev.twitch.com/t/missing-scope-channelsubscriptions-or-channel-subscriptions/32486/13 "2021-07-14T12:36:06Z")

</div>

So I don’t understand why i have a 400 with ‘Bad transport’ with this

 ![image](https://d2opxh93rbxzdn.cloudfront.net/original/2X/e/e78bbfe7a83e9a4ae4e235bb39d3d086d78c4891.png)

---

<div class="post-metadata">

**Author:** ![Dist](https://d3ovvz0v2ajtpu.cloudfront.net/user_avatar/discuss.dev.twitch.com/dist/32/7192_2.png) [@Dist](https://discuss.dev.twitch.com/u/Dist)\
**Post date:** [July 14, 2021, 12:45pm UTC](https://discuss.dev.twitch.com/t/missing-scope-channelsubscriptions-or-channel-subscriptions/32486/14 "2021-07-14T12:45:58Z")

</div>

The fields appear good, the only thing I can suggest is use double quotes `"` instead of single `'` as single quotes is invalid JSON.

---

<div class="post-metadata">

**Author:** ![Teyz](https://d3ovvz0v2ajtpu.cloudfront.net/user_avatar/discuss.dev.twitch.com/teyz/32/12749_2.png) [@Teyz](https://discuss.dev.twitch.com/u/Teyz)\
**Post date:** [July 14, 2021, 12:48pm UTC](https://discuss.dev.twitch.com/t/missing-scope-channelsubscriptions-or-channel-subscriptions/32486/15 "2021-07-14T12:48:01Z")

</div>

Yeah its work !  
I double the quotes and I change Content-Type for application/json

---

<div class="post-metadata">

**Author:** ![system](https://d2opxh93rbxzdn.cloudfront.net/original/2X/0/05909729875cce3b53e59d5561c4d23bb14948fc.png) [@system](https://discuss.dev.twitch.com/u/system)\
**Post date:** [August 13, 2021, 12:48pm UTC](https://discuss.dev.twitch.com/t/missing-scope-channelsubscriptions-or-channel-subscriptions/32486/16 "2021-08-13T12:48:07Z")

</div>

Closed on August 13, 2021, 12:48pm UTC

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
