Перейти к содержанию

Авторизация пользователя

Платный контент (SVOD, TVOD, DTO) доступен только авторизованному пользователю. Ниже описано, как получить для него токен доступа и передавать этот токен в запросах Content API.

Перед началом работы

Убедитесь, что:

  • у вас есть ID партнера, соль (salt) и пара ключей (см. Учетные данные);
  • ваш код умеет подписывать запросы (см. Подпись запроса);
  • пользователь уже есть в биллинге MEGOGO. Для этого выполните одно из действий:
    • зарегистрируйте подписку или покупку (см. Продажа подписки и Продажа отдельного видео);
    • создайте пользователя без услуги: GET https://billing.megogo.net/partners/{partner_id}/user/create?identifier={user_id}. Этот запрос нужен, если пользователь должен авторизоваться еще до покупки.

ПРИМЕЧАНИЕ

Видео AdVOD и FVOD, а также трейлеры воспроизводятся без привязки к пользователю. Однако видео AdVOD и FVOD входят в вашу подписку, поэтому, прежде чем запрашивать поток, убедитесь, что у пользователя есть доступ в вашем приложении.

Схема взаимодействия

sequenceDiagram
    participant App as Приложение партнера
    participant Server as Сервер партнера
    participant Billing as MEGOGO Billing API
    participant API as MEGOGO Content API
    Server->>Billing: subscription/subscribe (идентификатор пользователя, ID услуги)
    Billing-->>Server: "successful": true
    Server->>API: GET /auth/by_partners (isdn, partner_key, token, sign)
    API-->>Server: access_token
    App->>Server: Запрос на воспроизведение видео
    Server-->>App: Подписанный URL /stream с access_token
    App->>API: GET /stream
    API-->>App: src (URL манифеста)

Шаг 1. Вычислите токен авторизации

На своем сервере вычислите MD5-хеш от идентификатора пользователя, ID партнера и соли, склеенных без разделителя:

token = md5(user_id + partner_id + salt)

Пример с вымышленными значениями:

Значение Пример
Идентификатор пользователя user-0001
ID партнера examplepartner
Соль examplesalt
Строка для хеширования user-0001examplepartnerexamplesalt
token 694ebeecfb23fd2331b76712d53e3017

Идентификатор пользователя должен совпадать с тем, который вы передаете в запросах Billing API (userId). Выбирайте неизменяемый идентификатор — например, внутренний ID пользователя в вашей системе.

ОСТОРОЖНО

Отправляйте запрос авторизации только для пользователя, которого вы создали в Billing API (покупкой или через user/create). Запрос авторизации не сверяется с биллингом: если идентификатор пользователя MEGOGO не знаком, запрос создаст новый аккаунт MEGOGO без услуг.

Шаг 2. Отправьте запрос авторизации

GET https://api.megogo.net/v1/auth/by_partners?isdn={user_id}&partner_key={partner_id}&token={token}&sign={sign}
Параметр Обязательный Описание
isdn Да Идентификатор пользователя на вашей стороне
partner_key Да Ваш ID партнера
token Да Токен из шага 1
sign Да Подпись параметров isdn, partner_key и token — именно в таком порядке

Пример с вымышленными значениями и ключами из раздела Подпись запроса:

https://api.megogo.net/v1/auth/by_partners?isdn=user-0001&partner_key=examplepartner&token=694ebeecfb23fd2331b76712d53e3017&sign=0f80aec18dba20019775d90bad5e1020_example1_xx

Шаг 3. Получите токен доступа из ответа

Ожидаемый ответ (сокращен):

{
  "result": "ok",
  "code": 200,
  "data": {
    "user_id": 1234567,
    "tokens": {
      "access_token": "{access_token}",
      "access_token_expires_at": 1793300000,
      "remember_me_token": "{remember_me_token}",
      "remember_me_token_expires_at": 1951000000
    }
  }
}
Поле Описание
user_id ID пользователя MEGOGO
tokens.access_token Передавайте его в запросах, которым нужен пользователь
tokens.access_token_expires_at Срок действия токена доступа в Unix-времени (UTC) — примерно 6 часов с момента запроса
tokens.remember_me_token Долгосрочный токен. По нему можно получить новый токен доступа (шаг 5)
tokens.remember_me_token_expires_at Срок действия долгосрочного токена в Unix-времени — примерно 5 лет с момента запроса

Кроме того, в ответе есть поля профиля и другие поля, например is_new_user. Не используйте их.

ВНИМАНИЕ

Храните токен доступа так же надежно, как пароль, и не записывайте его в логи. Тот, у кого есть этот токен, может смотреть платный контент пользователя.

Шаг 4. Используйте токен доступа

Передавайте access_token в запросах, которым нужен пользователь:

  • /stream — чтобы получить поток платного видео;
  • /video/info — чтобы получить is_available для этого пользователя.

Включайте access_token в подпись так же, как все остальные параметры:

https://api.megogo.net/v1/stream?video_id={video_id}&access_token={access_token}&sign={sign}

ВНИМАНИЕ

URL потока в src содержит данные пользователя. Не записывайте его в логи и не сохраняйте. Запрашивайте новый src каждый раз, когда пользователь запускает воспроизведение.

Шаг 5. Получите новый токен доступа

Токен доступа действует примерно 6 часов. Когда получать новый токен, решаете вы — например, незадолго до истечения срока или после ошибки. Есть два способа:

  • отправить токен «запомнить меня» (remember-me) в /auth/refresh;
  • повторить шаги 1–3.

Чтобы обновить токен с помощью токена «запомнить меня», отправьте запрос:

GET https://api.megogo.net/v1/auth/refresh?rememberme_token={remember_me_token}&sign={sign}

ОСТОРОЖНО

Параметр называется rememberme_token — с одним подчеркиванием. Если передать remember_me_token, вернется ошибка.

Структура ответа такая же, как на шаге 3; используйте access_token из него. Если предыдущий токен доступа еще действителен, в ответе может вернуться он же. Токен «запомнить меня» действует примерно 5 лет.

Ошибки

Ответ Причина Что делать
HTTP 200, "result": "error", "message": "The entered login or password is incorrect" Неверный token Убедитесь, что идентификатор пользователя, ID партнера и соль те же, что и на шаге 1
HTTP 400, "message": "You entered wrong sign key" Неверная подпись Убедитесь, что в подписи есть isdn, partner_key и token — именно в таком порядке. В остальных запросах включайте в подпись access_token
HTTP 200, "result": "error", "code": 403 Токен доступа неверный или истек Получите новый токен доступа (шаг 5)
/auth/refresh: HTTP 200, "result": "error", "code": 400 Неверный токен «запомнить меня» или неверное имя параметра Повторите шаги 1–3
/stream: HTTP 200, "result": "ok", пустой src, в restrictions есть NOT_PURCHASABLE У пользователя нет активной услуги для этого видео в биллинге MEGOGO или в запросе нет access_token Убедитесь, что запрос к биллингу выполнен успешно. См. Воспроизведение видео

Результат

Вы получили токен доступа пользователя. С ним пользователь может смотреть платный контент, который оформлен на него в биллинге MEGOGO.

Чтобы проверить, что услуги пользователя в вашей системе и в MEGOGO совпадают, отправьте GET https://billing.megogo.net/partners/{partner_id}/user/subscriptions?identifier={user_id} (см. справочник по Billing API).

Дальнейшие шаги


Версия руководства 1.4.1, 2026-10-31 · Сообщить о проблеме на этой странице