Решение проблемы загрузки изображений в VK при кросс-постинге из WordPress

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

Контекст и архитектура решения

Плагин использует стандартные хуки WordPress (publish_post) для отправки контента. Для работы с VK применяется официальный PHP SDK (vkcom/vk-php-sdk) версии API 5.131. В архитектуре задействованы два типа токенов:

  • group_token: токен сообщества, используемый для вызова wall.post
  • user_token: токен пользователя, который планировалось использовать для загрузки фото, но в текущей реализации не задействован

Сценарий работы: плагин пытается загрузить миниатюру поста и прикрепить её к публикации на стене группы.

Ключевые ошибки в логах

  • Code: 15: "Access denied: no access to call this method. It cannot be called with current scopes." - возникает на этапе загрузки фото
  • Code: 100: "One of the parameters specified was missing or invalid: Violated: link_photo_sizing_rule. No photo given" - появляется при отправке поста без изображения

Анализ текущей реализации

В текущем коде для всех операций, включая загрузку изображений, используется исключительно токен сообщества (group_token). Это вызывает проблему, поскольку методы photos.getWallUploadServer и photos.saveWallPhoto требуют других прав доступа.

Основные этапы процесса:

  1. Инициализация с проверкой наличия токена сообщества
  2. Попытка загрузки фото с использованием group_token через методы getWallUploadServer и saveWallPhoto
  3. Отправка поста на стену через wall.post с тем же токеном

Корень проблемы и возможные решения

Ошибка Code: 15 указывает на недостаточность прав токена сообщества для вызова методов работы с фотографиями. Несмотря на то, что токен был сгенерирован с отмеченными правами photos и wall в настройках сообщества, этого оказывается недостаточно.

Существует два основных пути решения:

  1. Использование токена пользователя для этапов загрузки изображений (getWallUploadServer и saveWallPhoto), сохраняя токен сообщества только для wall.post
  2. Проверка прав приложения VK ID, которое может требовать дополнительной настройки scope в личном кабинете разработчика

Документация VK подтверждает, что для загрузки фото на стену группы действительно необходимы права photos и wall, но часто требуется именно пользовательский токен с соответствующими scope, либо дополнительная настройка приложения.