RePost Provider: VK¶
Платное дополнение к RePost: публикация новостей на стену сообщества VK.com.
Версия: 200.1.0¶
Совместимость: RePost ≥ 200.1.0, DLE 20.0¶
Скачать: Купить / скачать ⧉ ¶
Проверено с RePost 200.1.0.
Возможности (200.1.0)¶
| Тип | Поведение | Токен |
|---|---|---|
Текст / wall.post | wall.post ⧉, from_group | community |
| Фото | wall-photo ⧉: getWallUploadServer → photo → saveWallPhoto | user |
| Видео | video-in-profile ⧉: video.save → video_file → wall.post | user |
| Документ | document-in-profile ⧉: getWallUploadServer → file → docs.save | community |
Лимиты wall.post ⧉:
- ≤ 10 photo+video; ≤ 1 doc на пост
- Фото ≤ 50 МБ (JPG/PNG/GIF)
- Видео: практический PHP-cap ~200 МиБ; форматы mp4/avi/mov/mpeg/3gp/flv/wmv (не mkv/webm — API/upload часто даёт HTTP 500)
- Документ: не MP3; платформа до 4 ГиБ, в коде практический cap ~100 МиБ
- Интервал между постами ≥ 3 мин
Два токена¶
| Поле | Назначение |
|---|---|
vk_token | Ключ сообщества: wall.post, docs |
vk_user_token | Ключ пользователя: photos / video upload. Без него типы photo/video/media недоступны |
Настройки модуля RePost (секция VK)¶
| Поле | Назначение |
|---|---|
vk_api_host | Базовый домен API, по умолчанию vk.com. Для РФ — vk.ru. Запросы: https://api.{домен}/method |
Upload файлов — свой VkMultipartUpload (CURLFile + filename); SDK upload() без имени на video CDN даёт HTTP 500.
В актуальной доке wall.post ⧉ описан для user + wall (часто через support). В аддоне публикация идёт ключом сообщества + from_group=1. При error 214 проверьте права / user-токен с wall.
Канон: обзор API ⧉, PHP SDK ⧉.
Установка¶
- Установите RePost ≥ 200.1.0.
- Установите ZIP RePost Provider: VK через DLE Plugin Manager.
- В
devcraft/:
| Bash | |
|---|---|
Получение ключей и ID¶
OAuth в админке RePost нет — ключи вставляются вручную в форму подключения. Краткие подсказки также показаны под полями на странице редактирования подключения.
Официально: ключи доступа ⧉, ключ сообщества ⧉, права доступа ⧉.
ID сообщества (vk_group_id)¶
Допустимо:
- числовой id (
123456); club123456/public123456/event…;- короткое имя из URL (
moj_krutoj_pablikдляhttps://vk.ru/moj_krutoj_pablik).
Резолв имени — через utils.resolveScreenName ⧉ ключом сообщества.
Ключ сообщества (vk_token)¶
Нужен всегда: wall.post от имени группы, загрузка документов.
- Откройте сообщество под аккаунтом администратора.
- Управление → Настройки → Работа с API (или «Дополнительно» → ключи доступа — формулировки в интерфейсе VK меняются).
- Создайте ключ доступа сообщества.
- Включите минимум права
wallиdocs(документы на стену). - Скопируйте выданный ключ в поле «Ключ доступа сообщества».
Это не тот же ключ, что пользовательский. Community-токен не умеет photos.getWallUploadServer / video.save для стены (типичный error 27).
Без user-токена доступны типы отправки: Текст, Документ, Медиа — файлы.
Ключ пользователя (vk_user_token)¶
Нужен для типов Фото, Видео, Медиа / Медиа — только видео: upload фото на стену и video.save.
Права: photos, video. Желательно offline (бессрочный токен, expires_in=0). Аккаунт должен иметь право публиковать в целевом сообществе (админ/редактор).
Почему «официальный» OAuth часто не работает (2025–2026)¶
В dev.vk.com ⧉ при создании приложения обычно есть только мини-приложение / игра / плагин — типа Standalone больше нет. Для таких приложений Implicit Flow вида:
| Text Only | |
|---|---|
часто отвечает invalid_request / invalid scope: права photos / video / offline для нового app не выдаются без согласования.
Кабинет VK ID ⧉ (OAuth 2.1) ориентирован на бизнес-верификацию; расширенные scope для API стены нередко нужно запрашивать у [email protected]. Токены формата vk2.a.* из VK ID не всегда подходят к классическим method API (wall.post и т.п.).
Практический способ получить user-токен (для своего аккаунта)¶
- Откройте vkhost.github.io ⧉ (сторонний генератор ссылок OAuth под известные клиенты).
- Выберите приложение вроде VK Admin / аналог (если один клиент отвечает
application is blocked— попробуйте другой из списка). - Отметьте права
photos,video, по возможностиoffline. - Авторизуйтесь аккаунтом админа группы.
- После редиректа на
https://oauth.vk.com/blank.html#access_token=…скопируйте только значениеaccess_token(отvk1.a.до следующего&), не весь URL и неemail. - Вставьте в поле «Ключ доступа пользователя» в подключении RePost.
Замечания по безопасности и сроку:
- Токен = полный доступ от имени пользователя: не коммитьте, не кидайте в чаты; при утечке смените пароль / снимите доступ приложению.
- Если в URL
expires_in=86400(сутки), а не0— токен временный; безofflineего придётся обновлять. - Это обход через чужой client_id; для продакшена «по-белому» — бизнес-приложение VK ID + support с запросом
photos/video.
Проверка прав¶
После сохранения можно косвенно проверить: публикация типа media с картинкой/mp4 должна пройти; ошибка «нужен vk_user_token» значит поле пустое; error 27 — вызвали photo/video API community-ключом.
Поля подключения¶
| Поле | Описание |
|---|---|
vk_token | Ключ сообщества |
vk_user_token | Ключ пользователя (фото/видео) |
vk_group_id | ID группы |
vk_from_group | От имени сообщества |
vk_send_type | text | photo | video | media | media_video | media_document | document |
Смена провайдера в форме перезагружает schema. Dispatch читает vk_send_type.
Типичные ошибки¶
| Код / симптом | Смысл |
|---|---|
invalid scope | У приложения нет права запрашивать photos/video/offline |
application is blocked | Выбранный OAuth-клиент заблокирован VK — смените клиент на vkhost |
| 6 | Too many requests / интервал ≥ 3 мин между постами |
| 214 | Нет доступа к публикации (права wall / токен) |
| 27 | Метод недоступен для данного типа ключа — нужен user token |
| 13000 | Страйки сообщества |
| HTTP 500 на upload | Часто SDK без filename (в аддоне — свой upload) или неподдерживаемый формат видео (нужен mp4) |
Upload (канон VK)¶
- Фото: wall-photo ⧉ — не альбомный
photos.save - Видео: video-in-profile ⧉ — после upload отдельного save нет; на стену —
wall.post - Upload файлов — через
CURLFileсfilename(Guzzle SDK без имени на video CDN → HTTP 500) - Docs: document-in-profile ⧉ — для стены только
docs.getWallUploadServer(неgetUploadServer)
SDK и код¶
| Слой | Реализация |
|---|---|
| Composer | vkcom/vk-php-sdk ^5.0 (method calls) |
| Factory | VKClientFactory → API 5.199, host из vk_api_host |
| Upload | VkMultipartUpload (не SDK upload) |
| Каталог | Provider/VK/ |
Roadmap¶
- shortVideo / stories
- OAuth в админке
- Внешние
linkв video.save