VK Video: интегрируем как oembed provider source в Drupal

Еще один oembed провайдер, который мне понадобился не давно — VK VIDEO. Нужно было интегрировать видео с ВКонтакте в медиа библиотеку Drupal.

Если бы VK предлагали oembed endpoint, как многие ombed провайдеры, то настройка свелась бы просто к заданию конфигурации кастомного провайдера /admin/config/media/oembed-providers/custom-providers.

Т.е. мы бы ограничились установкой модуля oembed_providers.

Но VK предоставляет oembed данные через VK API. И этот подход требует создания web api, используя бизнес аккаунт. Дальше можно создать локальный endpoint, через который транслировать oembed json пакет как будто это и есть oembed провайдер.

Для реализации этого механизма я создал модуль vkoembed.

Модуль добавляет в список oembed провайдеров — VK Video, а также выступает в роли oembed провайдера. Но чтобы он мог обращаться к VK API, нужен сервисный ключ доступа.

Создание VK web app

Чтобы этот ключ получить, нужно зарегистрировать бизнес аккаунт в VK и «формально» создать т.н. web приложение.

Я говорю «формально», потому что само приложение уже создано (в виде drupal модуля), и нам требуется лишь формализовать доступ к VK API. Сервисный ключ определяет квоты и ограничения, которые будет накладываться на доступ к API. К примеру, в текущий момент базовое ограничение на количество запросов составляет 5 запросов в секунду.

Если ваш сайт требует больше/чаще обращаться за oembed информацией к VK, то возникнут определенные сложности, но вы можете расширить квоты, оплатив их согласно тарифам VK.

К счастью, модуль media, через который будут проходить данные, кеширует полученные oembed пакеты. И пока вы не сбросите кеши сайта, после которого могут массово запрашиваться данные из oembed провайдеров, проблем не возникнет.

При регистрации web app вам нужно будет указать базовый домен и доверенный redirect url. Можете указать домен/url вашего сайта. Эти настройки не важны для работы модуля, они нужны для пользовательской авторизации VK (если она используется приложением).

Каких то особых настроек/разрешений для созданного web app не требуется. Возможно, это изменится в будущем.

Возможные проблемы

Помимо очевидных квот, которые определяет VK API. Можно столкнуться с проблемами при тестировании интеграции на локальном сервере. Drupal предъявляет строгие требования к oembed провайдерам, и если если вы используете ssl (https) протокол на локальном сервере, то он вероятнее всего является self-signed.

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

Настройка media type

У нас создан web app, получен сервисный ключ, установлен модуль vkoembed. Какой алгоритм действий дальше?

Настройка плагина vkoembed

Единственная настройка — прописать ключ. Это делается на странице /admin/config/vk_api/settings. Ключ становится частью конфигурации.

Создание ведра

Провайдеры, для использования в media type объединяются в т.н. buckets. Потому нам нужно подключить VK Video в какое то из них, или создать новый bucket.

/admin/config/media/oembed-providers/buckets

Если VK video не появился в списке, то попробуйте сбросить кеш вот на этой странице — /admin/config/media/oembed-providers. oembed-providers использует какой то свой кеш для списка провайдеров, и общая команда сброса кешей его не затрагивает.

Настройка media type

Теперь можно создать/обновить media type, который будет принимать данные в том числе из VK Video. При настройке, в качестве media source выбирайте созданное ранее ведро. И нужно будет отметить конкретно какие провайдеры из этого ведра разрешены.

Итог

Как результат всех действий вы сможете создавать media элементы вроде:

В моём проекте в bucket еще находится rutube провайдер, потому тип медиа называется Rutube/VK videos.

VK предоставляет все необходимые oembed данные, т.е. html код и данные о миниатюре, в общем, всё, что требуется для рендеринга.

Мало букафф? Читайте есчо !

Drupal: шаблоны для taxonomy_term и view mode — как добавить?

Июль 19, 2025 г.

При работе с таксономией в Drupal нередко возникает потребность отображать термины по-разному в зависимости от контекста. Например, один и тот же термин в режиме teaser должен выводиться компактно, а в режиме full — с подробным описанием. Если вы используете ...

Читать

SpecialCharacters плагин в CKE5. Добавляем символы.

Апрель 11, 2025 г.

В CKEditor 5 есть родной плагин, который отображает список спец. символов для вставки в редактор. Он удобен и прост, проблема лишь в том, что он содержит ...

Читать

Как программно отрендерить View в Drupal и получить HTML

Август 3, 2025 г.

В некоторых случаях удобно не только встроить View через UI или блок, но и программно срендерить представление (View) и получить HTML — например, для отправки во внешнюю систему, в e-mail, или вывода в нестандартном месте. В этой статье покажем, как ...

Читать

Как в шаблоне параграфа получить заголовок родительской ноды

Сентябрь 15, 2025 г.

Иногда возникает задача: в Twig-шаблоне параграфа (paragraph.html.twig) нужно отобразить заголовок материала (ноды), к которому этот параграф прикреплён. Нам не нужно передавать что то дополнительно в шаблон, эти данные могут быть получены из самой ...

Читать
 

Комментарии к «VK Video: интегрируем как oembed provider source в Drupal»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий: