Решение проблемы загрузки изображений в 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, либо дополнительная настройка приложения.