Токен твич где взять
Перейти к содержимому

Токен твич где взять

  • автор:

Приложения и Аутентификация

Это руководство поможет разработчикам использовать Twitch Authentication, что позволяет вашему приложению выполнять действия от имени учетной записи Twitch или получать доступ к определенным данным об учетной записи пользователя. Существует несколько способов получить доступ к учетной записи Twitch от имени пользователя. Мы используем части протокола OAuth 2.0.

В дополнение к OAuth Twitch поддерживает OIDC (OpenID Connect) для более безопасного потока OAuth 2.0. Тонеры OIDC совместимы с услугами, созданными для соответствия требованиям OIDC, такими как Cognito от Amazon Web Services.

Аутентификация включает:
  • 1. Зарегистрируйте свое приложение, чтобы получить идентификатор клиента и секрет клиента.
  • 2. Получение токена. Это включает указание областей или разрешений, требуемых вашим приложением.
  • 3. Отправка маркера в ваш запрос API для аутентификации запросов API.

Когда мы описываем этапы, мы предоставляем образцы запросов, которые будет создано вашим приложением, чтобы ваши пользователи предоставили вам доступ к их активности просмотра.

Для удобства чтения часть кода с параметризованным примером показана на нескольких строках; реальные примеры находятся на одной линии.

Образцы кода доступны на странице Get Started на веб-сайте Twitch.

Предупреждение: обрабатывайте свой токен как пароль. Например, никогда не используйте токены доступа в любом общедоступном URL-адресе и никогда не показывайте маркеры на любой веб-странице, не требуя щелчка, чтобы удалить обфускацию. Держите жетоны в секрете!

Проверка запросов

Для разработчиков, которые используют аутентификацию Twitch для целей входа в систему, токены доступа должны быть проверены на повторяющийся интервал. Если ваша служба использует Twitch в качестве формы аутентификации (чтобы убедиться, что пользователи — те, кого они говорят в своем приложении), периодическая проверка ранее выпущенных токенов OAuth гарантирует, что пользователи, которые разрешили ваше приложение, не решили отключить интеграцию.

Мы рекомендуем проверять токены доступа перед тем, как делать запросы API, которые выполняют мутации, или получают доступ к конфиденциальной информации пользователей, если прошло более одного часа с момента последней проверки.

Twitch периодически проводит аудит. Если мы обнаружим приложение, которое не повторяет проверку токенов доступа (то есть приложение, которое проверяет только для входа в систему, а не после этого), мы будем обращаться к разработчикам и работать с ними для решения проблемы. Если проблема не устранена, мы можем предпринять карательные действия, такие как аннулирование ключа API разработчика или дросселирование производительности приложения.

Валидация важна из-за того, как работают токены доступа OAuth и ожидания конечного пользователя для контроля сеанса OAuth. Например, пользователи, которые предпочитают отключать вашу интеграцию со своими учетными записями Twitch, могут сделать это из своих настроек учетной записи в Twitch. Когда пользователь отключается от интеграции, все токены OAuth между этим пользователем и эта интеграция аннулируются. В этом случае ожидается, что токены OAuth привязаны к сеансам сторонних служб; как таковые, любые существующие сеансы между отключенным пользователем и этими службами также должны быть аннулированы.

При проверке каждого из ваших запросов отправьте запрос конечной точке проверки (https://id.twitch.tv/oauth2/validate) с вашим токеном OAuth в заголовке. Если вы аутентифицированы, ответ включает статус вашего токена. Успешный ответ указывает, что ваш токен доступа действителен.

Вот пример запроса:
curl -H "Authorization: OAuth " https://id.twitch.tv/oauth2/validate
И вот пример ответа:
< "client_id": "", "login": "", "scopes": [ "" ], "user_id": "" >

Регистрация

Чтобы создать приложение, использующее API Twitch, сначала необходимо зарегистрировать свое приложение на сайте разработчика Twitch. При создании этого приложения введите свой URI перенаправления, в котором пользователи перенаправляются после авторизации.

После создания приложения-разработчика вам присваивается идентификатор клиента. Некоторые потоки аутентификации также требуют секретности клиента, которую вы можете создать на той же странице, что и идентификатор клиента.

  • Склиент ID являются общедоступными и могут быть колективными (например, встроены в источник веб-страницы).
  • Секреты клиента эквивалентны паролю для вашего приложения и должны быть конфиденциальными. Никогда не выставляйте его пользователям, даже в неясной форме.

Поскольку секрет вашего клиента является конфиденциальным, мы не можем показать его вам после того, как вы покинете страницу, поэтому обязательно записывайте ее где-нибудь в безопасности. Кроме того, генерация нового секретного ключа немедленно аннулирует текущий, что может привести к сбою ваших запросов API до тех пор, пока ваше приложение не будет обновлено.

Предупреждение: Идентификаторы клиентов должны быть уникальными для каждого приложения: не используйте повторно идентификаторы клиентов в нескольких приложениях. Кроме того, приложения должны запросить соответствующий набор областей для целевых API-интерфейсов. Несоблюдение этих рекомендаций может привести к приостановке доступа вашего приложения к API Twitch.

Типы токенов

Twitch поддерживает несколько типов токенов:

Набор требований к конечному пользователю для данной авторизации. Использование токенов идентификатора OIDC (JWT) позволяет вам получить подробную информацию о вашем пользователе (например, адрес электронной почты) для конкретной авторизации. Эти данные представлены заявками в полезной нагрузке токена идентификатора.

Наша конечная точка обнаружения находится по адресу https://id.twitch.tv/oauth2/.well-known/openid-configuration. Его можно использовать со стандартными клиентами OIDC, такими как AWS Cognito.

Аутентифицируйте пользователей и разрешите вашему приложению делать запросы от их имени. Если ваше приложение использует Twitch для входа в систему или делает запросы в контексте аутентифицированного пользователя, вам необходимо создать токен доступа пользователя.

Аутентифицируйте приложение и разрешите ему доступ к ресурсам, которыми он владеет. Поскольку токены доступа приложений не связаны с пользователем, они не могут использоваться с конечными точками, требующими аутентификации пользователя.

Некоторые конечные точки Twitch API требуют проверки подлинности приложения (не аутентификации пользователя). Если ваше приложение использует эти конечные точки, вам необходимо создать токен доступа к приложениям. Точки доступа к доступу получают учетные данные клиента (а не учетные данные пользователя). Они позволяют вам делать безопасные запросы API, которые не от имени конкретного пользователя. Учетные данные клиента также могут использоваться вместо заголовков идентификаторов клиента для надежной идентификации вашего приложения.

Точки доступа к приложениям истекают примерно через 60 дней, поэтому вы должны проверить, что токен доступа к вашему приложению действителен, отправив запрос на конечную точку проверки (см. Проверка запросов). Если ваш токен истек, создайте новый.

Точки доступа к приложениям предназначены только для запросов API-интерфейсов сервер-сервер и никогда не должны включаться в код клиента.

Получение токенов

Домен, посвященный аутентификации Twitch, — https://id.twitch.tv. (Предыдущие посетители этой страницы будут замечать, что URL-адреса были обновлены, чтобы заменить https://api.twitch.tv/kraken на https://id.twitch.tv. Код, который использует старый домен kraken для проверки подлинности Twitch, будет продолжен работать до конца 2018 года, когда мы удаляем функциональность Twitch API v5. Twitch API v5 в настоящее время устарел.)

Мы поддерживаем несколько потоков аутентификации:

Тип потока Описание
Неявный поток кода В вашем приложении не используется сервер, например клиентское приложение JavaScript или мобильное приложение. Этот подход не требует сервера, который должен делать запросы к API.
Кодирование кода авторизации Ваше приложение использует сервер, может безопасно хранить секрет клиента и может выполнять запросы сервера к серверу.
Поток клиентских учетных данных Вам нужен токен доступа к приложениям.

Процедура, которую вы должны использовать для получения токенов, зависит от типов) тонов, которые вы хотите:

Процедура Токен доступа пользователя ID токен Токен доступа к приложениям
Неявный поток кода OIDC
Неявный поток кода OAuth
Поток кода авторизации OIDC
Поток кода авторизации OAuth
Поток учетных данных клиента OAuth

В целях безопасности в примерах в этих разделах используется токен поддельного доступа, 0123456789abcdefghijABCDEFGHIJ .

Отправка доступа пользователей и токенов доступа к приложениям

Когда запрос API требует аутентификации, отправьте токен доступа в виде заголовка. Заголовок отличается, в зависимости от того, какой API вы используете:

В новом Twitch API:

curl -H "Authorization: Bearer " https://api.twitch.tv/helix/
curl -H "Authorization: OAuth " https://api.twitch.tv/kraken/

Отмена токенов доступа

Чтобы очистить ранее полученные токены доступа, используйте конечную точку торможения токена Twitch OAuth. Его реализация соответствует стандарту OAuth.

На своем сервере отмените токен доступа, выполнив этот запрос:

POST https://id.twitch.tv/oauth2/revoke ?client_id= &token=

Например, используя вашего ранее аутентифицированного пользователя, запрос:

POST https://id.twitch.tv/oauth2/revoke?client_id=uo6dggojyb8d6soh92zknwmi5ej1q2&token=0123456789abcdefghijABCDEFGHIJ

Этот запрос также работает для токенов доступа к приложениям. Чтобы аннулировать токен доступа к приложениям, который мы создали ранее, сделайте этот запрос:

POST https://id.twitch.tv/oauth2/revoke?client_id=uo6dggojyb8d6soh92zknwmi5ej1q2&token=prau3ol6mg5glgek8m89ec2s9q5i3i

Как успешные запросы, так и запросы с плохими токенами возвращают 200 OK без тела. Запросы с плохими токенами возвращают один и тот же ответ, поскольку нет значимого действия, которое клиент может предпринять после отправки плохого токена.

Запрошенные неверные запросы возвращают 400 Bad Request , а также информацию о том, как исправить запрос, как правило, напоминание запрашивающего, чтобы включить client_id .

Обновление токенов доступа

Новые токены доступа OAuth2 истекают. Периоды истечения срока действия токена различаются по длине, основываясь на том, как был получен токен. Токены возвращают поле expires_in , указывающее, как долго должен продолжаться токен. Однако вы должны создавать свои приложения таким образом, чтобы они были устойчивыми к ошибкам аутентификации токена. Другими словами, приложение, способное обновлять токены, не должно знать, как долго будет действовать токен. Скорее, он должен быть готов к тому, чтобы токен стал недействительным в любое время.

Чтобы позволить приложениям оставаться аутентифицированными в течение длительного времени в мире истекающих токенов, мы разрешаем обновлять сеансы в соответствии с рекомендациями в разделе «Обновление токена доступа» в RFC OAuth2. Как правило, обновлять токены используются для продления срока службы заданной авторизации.

Выходы токена не влияют на существующие токены. В будущем мы будем отзывать постоянно живущие сессии.

(Обратите внимание, что токены доступа и токены доступа не могут быть обновлены.)

How to Refresh

Чтобы обновить токен, вам нужна пара токенов доступа / обновления, исходящая из тела. Например:

Вам также нужны client_id и client_secret , используемые для создания указанной пары токенов доступа / обновления доступа

Чтобы обновить, используйте этот запрос:

curl -X POST https://id.twitch.tv/oauth2/token —data-urlencode ?grant_type=refresh_token &refresh_token= &client_id= &client_secret=

Существует несколько требуемых параметров и один необязательный параметр:

Authentication

Twitch APIs use OAuth 2.0 access tokens to access resources. If you’re not already familiar with the specification, reading it may help you better understand how to get access tokens to use with the Twitch API. The Twitch APIs use two types of access tokens: user access tokens and app access tokens. The reference content for each API identifies the type of access token you must use to access its resource. Some APIs require a user access token, others require a user access token or an app access token, and a few like the EventSub APIs require app access tokens. IMPORTANT Treat access tokens, refresh tokens, and client secrets like a password and safeguard them.

User access tokens

Screenshot of authorization dialog

APIs that require the user’s permission to access resources use user access tokens. Twitch uses scopes to identify the resources, or the fields within a resource, that your app needs permission to access. For example, you don’t need permission to get a user’s User resource but you do need their permission to include their email address with the resource. The following example shows the dialog that Twitch displays to the user to get their permission for your app to create a Poll, stop a Poll, or get a list of their Polls. If the user clicks Authorize, Twitch gives your app an access token that lets it perform those actions. Based on the type of app you’re building, you’ll use one of the following OAuth flows to get a user access token.

Flow Description
Implicit grant flow Use this flow if your app does not use a server. For example, use this flow if your app is a client-side JavaScript app or mobile app. For details about getting a user access token using this flow, see Implicit grant flow.
Authorization code grant flow Use this flow if your app uses a server, can securely store a client secret, and can make server-to-server requests to the Twitch API. For details about getting a user access token using this flow, see Authorization code grant flow.
Device code grant flow Use this flow if your application has limited input capabilities or lacks a suitable browser; such as set-top boxes, games, or Electron applications. For details about getting a token using this flow, see Device code grant flow.

App access tokens

APIs that don’t require the user’s permission to access resources use app access tokens. For example, you can get a list of videos without the user’s permission. You should get an app access token, if your app only calls APIs that don’t require the user’s permission to access the resource. But if your app also calls APIs that require a user access token, you should just get a user access token because in most cases you can use the user access token to call APIs that accept app access tokens. The exception is if you call the EventSub APIs (for example, Create EventSub Subscription). If you call the EventSub APIs and use webhooks, you must also get an app access token because the calls fail if you try to use a user access token. To get an app access token, use the client credentials grant flow. For details, see Client credentials grant flow.

Authentication flows

The following table summarizes the flows you can use and the type of access token it returns.

Procedure User Access Token ID Token App Access Token
OIDC Implicit Code Grant Flow
OAuth Implicit Code Grant Flow
OIDC Authorization Code Grant Flow
OAuth Authorization Code Grant Flow
OAuth Device Code Grant Flow
OAuth Client Credentials Grant Flow

NOTE An ID token or identity token encodes the user’s identity in a JSON Web Token (JWT). It’s used in OpenID Connect client apps to sign in users. You cannot use the ID token in place of a user or app access token when calling the Twitch API. Read more about ID tokens.

Passing the access token to the API

After getting an access token using one of the above authentication flows, use it to set an API request’s Authorization header. Authorization: Bearer For an API request that shows using the header, see Get channel information.

Tokens don’t last forever

  • The token expires.
  • The user changes their password.
  • Twitch revokes the token.
  • The user disconnects your app by going to their account’s /settings/connections page and clicking Disconnect next to your app’s name.

If a token becomes invalid, your API requests return HTTP status code 401 Unauthorized. When this happens, you’ll need to get a new access token using the appropriate flow for your app.

Validating tokens for third-party apps

Third-party apps that call the Twitch APIs and maintain an OAuth session must call the /validate endpoint to verify that the access token is still valid. Read more

Next steps

Before you can get an access token you need to register your app. For details, see Registering your app.

Check out these code samples that show how to get access tokens:

Getting OAuth Access Tokens

Twitch APIs require access tokens to access resources. Depending on the resource you’re accessing, you’ll need a user access token or app access token. The API’s reference content identifies the type of access token you’ll need. The simple difference between the two types of tokens is that a user access token lets you access a user’s sensitive data (with their permission) and an app access token lets you access their non-sensitive data only (and doesn’t require the user’s permission). If the APIs you’re calling require an OAuth app or user access token, use one of the following flows to get the token:

Flow Token Type Description
Implicit grant flow User access token Use this flow if your app does not use a server. For example, use this flow if your app is a client-side JavaScript app or mobile app.
Client credentials grant flow App access token Use this flow if your app uses a server, can securely store a client secret, and can make server-to-server requests to the Twitch API. This flow is meant for apps that only need an app access token.
Authorization code grant flow User access token Use this flow if your app uses a server, can securely store a client secret, and can make server-to-server requests to the Twitch API.
Device code grant flow User access token Use this flow if your app is run on a client with limited input capabilities, such as set-top boxes or video games.

NOTE Third-party apps that call the Twitch APIs and maintain an OAuth session must call the /validate endpoint to verify that the access token is still valid. Read more

Implicit grant flow

Parameter Required? Type Description
client_id Yes String Your app’s registered client ID.
force_verify No Boolean Set to true to force the user to re-authorize your app’s access to their resources. The default is false.
redirect_uri Yes URI Your app’s registered redirect URI. The access token is sent to this URI.
response_type Yes String Must be set to token .
scope Yes String A space-delimited list of scopes. The APIs that you’re calling identify the scopes you must list. You must URL encode the list.
state No String Although optional, you are strongly encouraged to pass a state string to help prevent Cross-Site Request Forgery (CSRF) attacks. The server returns this string to you in your redirect URI (see the state parameter in the fragment portion of the URI). If this string doesn’t match the state string that you passed, ignore the response. The state string should be randomly generated and unique for each OAuth request.

The following URI is an example of the URI that you’ll navigate to in your web browser control (the URI is formatted for easier reading).

https://id.twitch.tv/oauth2/authorize ?response_type=token &client_id=hof5gwx0su6owfnys0yan9c87zr6t &redirect_uri=http://localhost:3000 &scope=channel%3Amanage%3Apolls+channel%3Aread%3Apolls &state=c3ab8aa609ea11e793ae92361f002671 

If the user is logged into Twitch, Twitch asks them to authorize your application’s access to the specified resources. If they’re not logged in, Twitch first asks them to log in and then asks them to authorize your application. If the user authorizes your application by clicking Authorize, the server sends the access token to your redirect URI in the fragment portion of the URI (see the access_token parameter):

http://localhost:3000/ #access_token=73d0f8mkabpbmjp921asv2jaidwxn &scope=channel%3Amanage%3Apolls+channel%3Aread%3Apolls &state=c3ab8aa609ea11e793ae92361f002671 &token_type=bearer 

NOTE In JavaScript, you can access the fragment using document.location.hash . If the user didn’t authorize your app, the server sends the error code and description to your redirect URI (see the error and error_description query parameters).

http://localhost:3000/ ?error=access_denied &error_description=The+user+denied+you+access &state=c3ab8aa609ea11e793ae92361f002671 

Client credentials grant flow

The client credentials grant flow is meant only for server-to-server API requests that use an app access token. To get an access token, send an HTTP POST request to https://id.twitch.tv/oauth2/token . Set the following x-www-form-urlencoded parameters as appropriate for your app.

Parameter Required? Type Description
client_id Yes String Your app’s registered client ID.
client_secret Yes String Your app’s registered client secret.
grant_type Yes String Must be set to client_credentials .

The following example shows the parameters in the body of the POST (the parameters are formatted for easier reading).

client_id=hof5gwx0su6owfnys0yan9c87zr6t &client_secret=41vpdji4e9gif29md0ouet6fktd2 &grant_type=client_credentials 

If the request succeeds, it returns an access token.

 "access_token": "jostpf5q0uzmxmkba9iyug38kjtgh", "expires_in": 5011271, "token_type": "bearer" > 

Authorization code grant flow

This flow is meant for apps that use a server, can securely store a client secret, and can make server-to-server requests to the Twitch API. To get a user access token using the authorization code grant flow, your app must Get the user to authorize your app and then Use the authorization code to get a token.

Get the user to authorize your app

Parameter Required? Type Description
client_id Yes String Your app’s registered client ID.
force_verify No Boolean Set to true to force the user to re-authorize your app’s access to their resources. The default is false.
redirect_uri Yes URI Your app’s registered redirect URI. The authorization code is sent to this URI.
response_type Yes String Must be set to code .
scope Yes String A space-delimited list of scopes. The APIs that you’re calling will identify the scopes you must list. You must URL encode the list.
state No String Although optional, you are strongly encouraged to pass a state string to help prevent Cross-Site Request Forgery (CSRF) attacks. The server returns this string to you in your redirect URI (see the state parameter in the fragment portion of the URI). If this string doesn’t match the state string that you passed, ignore the response. The state string should be randomly generated and unique for each OAuth request.

The following URI shows an example request that you’ll navigate to in your web browser control (the URI is formatted for easier reading).

https://id.twitch.tv/oauth2/authorize ?response_type=code &client_id=hof5gwx0su6owfnys0nyan9c87zr6t &redirect_uri=http://localhost:3000 &scope=channel%3Amanage%3Apolls+channel%3Aread%3Apolls &state=c3ab8aa609ea11e793ae92361f002671 

If the user is logged into Twitch, Twitch asks them to authorize your application’s access to the specified resources. If they’re not logged in, Twitch first asks them to log in and then asks them to authorize your application. If the user authorized your app by clicking Authorize, the server sends the authorization code to your redirect URI (see the code query parameter):

http://localhost:3000/ ?code=gulfwdmys5lsm6qyz4xiz9q32l10 &scope=channel%3Amanage%3Apolls+channel%3Aread%3Apolls &state=c3ab8aa609ea11e793ae92361f002671 

If the user didn’t authorize your app, the server sends the error code and description to your redirect URI (see the error and error_description query parameters):

http://localhost:3000/ ?error=access_denied &error_description=The+user+denied+you+access &state=c3ab8aa609ea11e793ae92361f002671 

Use the authorization code to get a token

The second step in this flow is to use the authorization code (see above) to get an access token and refresh token. To get the tokens, send an HTTP POST request to https://id.twitch.tv/oauth2/token . Set the following x-www-form-urlencoded parameters in the body of the POST.

Parameter Required? Type Description
client_id Yes String Your app’s registered client ID.
client_secret Yes String Your app’s registered client secret.
code Yes String The code that the /authorize response returned in the code query parameter.
grant_type Yes String Must be set to authorization_code .
redirect_uri Yes URI Your app’s registered redirect URI.

The following example shows the parameters in the body of the POST (the parameters are formatted for easier reading).

client_id=hof5gwx0su6owfnys0yan9c87zr6t &client_secret=41vpdji4e9gif29md0ouet6fktd2 &code=gulfwdmys5lsm6qyz4xiz9q32l10 &grant_type=authorization_code &redirect_uri=http://localhost:3000 

If the request succeeds, it returns an access token and refresh token.

 "access_token": "rfx2uswqe8l4g1mkagrvg5tv0ks3", "expires_in": 14124, "refresh_token": "5b93chm6hdve3mycz05zfzatkfdenfspp1h1ar2xxdalen01", "scope": [ "channel:moderate", "chat:edit", "chat:read" ], "token_type": "bearer" > 

When the access token expires, use the refresh token to get a new access token. For information about using refresh tokens, see Refreshing Access Tokens.

Device code grant flow

  • Do not need to maintain a client secret.
  • Can refresh an access token without passing a client secret.
  • Are only limited to the usage of device authorization grant flow to obtain OAuth tokens and cannot use any of the other flows like client credentials, implicit grant flow highlighted above.

Although the public clients do not need a client secret to obtain an access token there are some important details to be noted about the DCF related refresh tokens. For more information about using refresh tokens, see Refreshing Access Tokens:

  • These tokens are for one time use only, meaning if they are used in refreshing a token they will become invalid after use.
  • There is an expiry on the refresh token which is inactive, which is set to 30 days. After a refresh token expires the user is expected to start the DCF flow once again to obtain a new refresh token. Both the refresh tokens and the access tokens can be stored safely in the user’s device as HttpOnly cookies.
  • All access tokens obtained have the same expiry like before, i.e. 4 hours.

Generally, if you device is secure, then confidential is the client type you should use, however if your application is on a more open platform (such as windows) we suggest using public.

Starting the DCF Flow for your user

The first step is to make the following cURL command from your client. This cURL command starts a device authorization grant code flow for your client.

Specify the following query parameters as appropriate for your application.

Parameter Required? Type Description
client_id Yes String Your app’s registered Client ID.
scopes Yes String A space-delimited list of scopes. The APIs that you’re calling identify the scopes you must list. You must URL encode the list.
 curl --location 'https://id.twitch.tv/oauth2/device' \ --form 'client_id=""' \ --form 'scopes=""' 

The response to this call will contain:

Parameter Type Description
device_code String The identifier for a given user.
expires_in Int Time until the code is no longer valid
interval Int Time until another valid code can be requested
user_code String The code that the user will use to authenticate
verification_uri String The address you will send users to, to authenticate
  "device_code": "ike3GM8QIdYZs43KdrWPIO36LofILoCyFEzjlQ91", "expires_in": 1800, "interval": 5, "user_code": "ABCDEFGH", "verification_uri": "https://www.twitch.tv/activate?public=true&device-code=ABCDEFGH" > 

activate your device page image

Authorization Step

The user is presented with an authorization screen to review the scopes and complete the authorization.

access page and scopes requested

Obtaining the refresh token/access token pair

The next step for the client is to obtain the refresh token/access token pair for this current completed authorization. To do that we will utilize the device_code sent in the response of the first step. This grant_type is the RFC standard urn:ietf:params:oauth:grant-type:device_code, which signals our Authorization server that the client is trying to exchange the device code for a refresh_token/access_token pair.

cURL Request

Parameter Required Type Description
location Yes String URL used to request a token from Twitch. Will always be the same.
client_id Yes String Your app’s registered client ID.
scopes Yes String A space-delimited list of scopes. The APIs that you’re calling identify the scopes you must list. You must URL encode the list.
device_code Yes String The code that will authenticate the user.
grant_type Yes String Must be set to device_code .
 curl --location 'https://id.twitch.tv/oauth2/token' \ --form 'client_id=""' \ --form 'scopes=""' \ --form 'device_code=""' \ --form 'grant_type="urn:ietf:params:oauth:grant-type:device_code"' 

Response

Parameter Type Description
access_token String The authenticated token, to be used for various API endpoints and EventSub subscriptions.
expires_in Int Time until the code is no longer valid.
refresh_token String A token used to refresh the access token.
scope String An array of the scopes requested.
token_type String Will generally be “bearer”.
  "access_token": "", "expires_in": , "refresh_token": "", "scope": [ "" ], "token_type": "bearer" > 

Once the access_token and refresh_tokens are received, the client should store these tokens for future exchange token calls using the refresh_token grant type which is highlighted in the step 5.

Before the user completes the authorization, the client cannot obtain the tokens, in this scenario we will send the following response when the client attempts to obtain the token using the device code.

  "status": 400, "message": "authorization_pending" > 

The device_code is one time use only, once the device_code has been used to obtain the tokens the client will receive the following response from the authorization server.

  "status": 400, "message": "invalid device code" > 

Finally a client can keep using the refresh_token grant to exchange a refresh_token for a new access_token. As mentioned earlier the refresh_token is one time use only and will be invalid once the token is exchanged. The client will then be presented with the following response if used more than once.

  "status": 400, "message": "Invalid refresh token" > 

Examples of the four flows

If you don’t want to write code to test the OAuth flows in this topic, try the following options. Before continuing, you’ll need to register an app to get a client ID and secret that you can use below. When registering your app, use http://localhost:3000 for your redirect URI.

Implicit flow example

Open your favorite browser and enter the following URI in the address bar. Substitute your client ID for the placeholder string.

https://id.twitch.tv/oauth2/authorize?response_type=token&client_id=&redirect_uri=http://localhost:3000&scope=channel%3Amanage%3Apolls+channel%3Aread%3Apolls&state=c3ab8aa609ea11e793ae92361f002671 

If you’re not already signed in to your Twitch account, you’ll be asked to sign in. If this client ID hasn’t previously requested access to your Poll resource, you’ll be asked to give consent. If you want to always force consent, include the force_verify query parameter.

If you consented, the address bar is set to your redirect URI and it contains the access token (see access_token in the URI’s fragment).

http://localhost:3000/#access_token=wt6oxekssgvj53dkf38grzyzh2xe&scope=channel%3Amanage%3Apolls+channel%3Aread%3Apolls&state=c3ab8aa609ea11e793ae92361f002671&token_type=bearer 

Authorization code flow example

Open your favorite browser and enter the following URI in the address bar. Substitute your client ID for the placeholder string.

https://id.twitch.tv/oauth2/authorize?response_type=code&client_id=&redirect_uri=http://localhost:3000&scope=channel%3Amanage%3Apolls+channel%3Aread%3Apolls&state=c3ab8aa609ea11e793ae92361f002671 

If you’re not already signed in to your Twitch account, you’ll be asked to sign in. If this client ID hasn’t previously requested access to your Poll resource, you’ll be asked to give consent. If you want to always force consent, include the force_verify query parameter.

If you consented, the address bar is set to your redirect URI and it contains the authorization code (see the code parameter).

http://localhost:3000/?code=17038swieks1jh1hwcdr36hekyui&scope=channel%3Amanage%3Apolls+channel%3Aread%3Apolls&state=c3ab8aa609ea11e793ae92361f002671 

Open a terminal window and enter the following cURL POST command (you’ll need cURL installed on your computer). Replace the placeholder strings and the authorization code with your values.

curl -X POST 'https://id.twitch.tv/oauth2/token' \ -H 'Content-Type: application/x-www-form-urlencoded' \ -d 'client_id=&client_secret=&code=17038swieks1jh1hwcdr36hekyui&grant_type=authorization_code&redirect_uri=http://localhost:3000' 

The response contains a JSON object with the access token and refresh token.

 "access_token": "fvc8xeeajsh0zkunt6fby67rnyux1", "expires_in": 15485, "refresh_token": "e2zyj5itwcmlg2clbcnd1wqlibypzjjydwu26bfhqhx1klp2o", "scope": [ "channel:manage:polls", "channel:read:polls" ], "token_type": "bearer" > 

Client credentials flow example

Open a terminal window and enter the following cURL POST command (you’ll need cURL installed on your computer).

curl -X POST 'https://id.twitch.tv/oauth2/token' \ -H 'Content-Type: application/x-www-form-urlencoded' \ -d 'client_id=&client_secret=&grant_type=client_credentials' 

The response contains a JSON object with the access token.

 "access_token": "jostpf5q0puzmxmkba9iyug38kjtg", "expires_in": 5011271, "token_type": "bearer" > 

Device code flow example

The device will make a cURL request with requested scopes.

curl -X POST 'https://id.twitch.tv/oauth2/device' \ -H 'Content-Type: application/x-www-form-urlencoded' \ -d 'client_id=&scopes=' 

The response will contain a URI.

 "device_code": "ikeYZs43KdrWPIO363GM8QIdLofILoCyFEzjlQ91", "expires_in": 1800, "interval": 5, "user_code": "ABCDEFGH", "verification_uri": "https://www.twitch.tv/activate?public=true&device-code=ABCDEFGH" > 

The device will show the user the URI to navigate to, in the above example it’s https://www.twitch.tv/activate?public=true&device-code=ABCDEFGH .

Once the user has accepted the authorization the device will call

curl --location 'https://id.twitch.tv/oauth2/token' \ --form'client_id="0mmkby2n450y6ho3s2b4xth9fjggz1"' \ --form'scope="channel:manage:broadcast"' \ --form'device_code="ike3GM8QIdYZs43KdrWPIO36LofILoCyFEzjlQ91"' \ --form'grant_type="urn:ietf:params:oauth:grant-type:device_code"' 

Which will get a response with the access token and the refresh token.

 "access_token": "", "expires_in": 14820, "refresh_token": "", "scope": [ "user:edit" ], "token_type": "bearer" > 

Проблема получения токена OAuth

Хотелось бы разобраться, как получить токен авторизации для запроса на Twitch API. В документации API есть вот такой запрос.

GET https://id.twitch.tv/oauth2/authorize ?client_id= &redirect_uri= &response_type= &scope=

В этом запросе мне непонятен redirect_uri. Токен мне нужен для разовых запросов на API, например для получения ID канала, а не для приложения.

Отслеживать

задан 31 дек 2020 в 14:35

11 1 1 бронзовый знак

0

Сортировка: Сброс на вариант по умолчанию

Знаете кого-то, кто может ответить? Поделитесь ссылкой на этот вопрос по почте, через Твиттер или Facebook.

  • get
  • token
  • twitch

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *