Интеграция Twitch API с сайтом

Наша компания занимается разработкой, поддержкой и обслуживанием сайтов любой сложности. От простых одностраничных сайтов до масштабных кластерных систем построенных на микро сервисах. Опыт разработчиков подтвержден сертификатами от вендоров.
Разработка и обслуживание любых видов сайтов:
Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Предлагаемые услуги
Показано 1 из 1 услугВсе 2065 услуг
Интеграция Twitch API с сайтом
Средняя
~2-3 рабочих дня
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1214
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1161
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    852
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1041
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    823
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    815

Интеграция Twitch API с сайтом

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

Аутентификация (App Access Token)

async function getTwitchToken(): Promise<string> {
  const resp = await fetch('https://id.twitch.tv/oauth2/token', {
    method: 'POST',
    body: new URLSearchParams({
      client_id:     CLIENT_ID,
      client_secret: CLIENT_SECRET,
      grant_type:    'client_credentials',
    }),
  });
  const data = await resp.json();
  return data.access_token;
}

Статус стрима

async function getStreamStatus(channelName: string): Promise<StreamStatus | null> {
  const token = await getTwitchToken();

  const resp = await fetch(
    `https://api.twitch.tv/helix/streams?user_login=${channelName}`,
    {
      headers: {
        'Authorization': `Bearer ${token}`,
        'Client-Id':     CLIENT_ID,
      },
    }
  );

  const data = await resp.json();
  const stream = data.data[0];

  if (!stream) return null;

  return {
    isLive:      true,
    title:       stream.title,
    game:        stream.game_name,
    viewers:     stream.viewer_count,
    startedAt:   stream.started_at,
    thumbnail:   stream.thumbnail_url.replace('{width}', '640').replace('{height}', '360'),
  };
}

Встраивание плеера

<!-- Twitch Embed -->
<div id="twitch-player"></div>
<script src="https://player.twitch.tv/js/embed/v1.js"></script>
<script>
  new Twitch.Embed('twitch-player', {
    channel:     'channel_name',
    width:       '100%',
    height:      480,
    parent:      ['example.com'],  // домен сайта обязателен
    autoplay:    false,
    muted:       false,
  });
</script>

OAuth2: авторизация через Twitch + проверка подписки

// Проверка подписки пользователя на канал
public function checkSubscription(string $userToken, string $broadcasterId): bool
{
    $user = Http::withToken($userToken)
        ->withHeaders(['Client-Id' => config('services.twitch.client_id')])
        ->get('https://api.twitch.tv/helix/users')
        ->json('data.0');

    $sub = Http::withToken($userToken)
        ->withHeaders(['Client-Id' => config('services.twitch.client_id')])
        ->get('https://api.twitch.tv/helix/subscriptions/user', [
            'broadcaster_id' => $broadcasterId,
            'user_id'        => $user['id'],
        ]);

    return $sub->status() === 200;
}

EventSub для уведомлений

Twitch EventSub позволяет получать webhook-уведомления о начале/конце стрима:

// Подписка на событие stream.online
Http::withToken($appToken)
    ->withHeaders(['Client-Id' => CLIENT_ID])
    ->post('https://api.twitch.tv/helix/eventsub/subscriptions', [
        'type'    => 'stream.online',
        'version' => '1',
        'condition' => ['broadcaster_user_id' => $broadcasterId],
        'transport' => [
            'method'   => 'webhook',
            'callback' => 'https://example.com/webhooks/twitch',
            'secret'   => config('services.twitch.webhook_secret'),
        ],
    ]);

Время реализации: 2–3 рабочих дня.