Ошибка CONNECTION_ERROR при загрузке фото в Одноклассники через make.com

    При разработке кастомного модуля для автоматической загрузки изображений на сервер социальной сети Одноклассники (ОК) пользователи нередко сталкиваются с ошибкой CONNECTION_ERROR. Внешне запрос выглядит корректным: используется правильный URL загрузки, метод POST, передаются все необходимые параметры авторизации (application_id, access_token, session_secret_key). Однако сервер возвращает one.image.upload.client.ContentUploadServerException: CONNECTION_ERROR. Давайте разберём основные причины и способы их устранения.

    Почему возникает ошибка CONNECTION_ERROR?

    Эта ошибка указывает на проблему на стороне клиента при отправке данных. Наиболее вероятные причины:

    • Неправильный формат тела запроса - сервер ОК ожидает данные в формате multipart/form-data, но структура может быть нарушена.
    • Дублирование заголовков - если Content-Type указан дважды (в headers и в body), это может вызвать конфликт.
    • Проблемы с сессионным ключом - session_secret_key может быть недействителен или неправильно подписан.
    • Ошибки в кодировке файла - изображение должно передаваться в бинарном виде, а не как строка Base64 (если только API не поддерживает Base64).

    Как исправить модуль в make.com

    1. Удалите лишний заголовок Content-Type

    В исходной конфигурации Content-Type указан и в headers, и в body. Это может сбивать сервер. Оставьте заголовок только в headers:

    "headers": {
        "Content-Type": "multipart/form-data"
    }

    Из body уберите строку "Content-Type": "multipart/form-data".

    2. Проверьте формат передачи файла

    Убедитесь, что pic1 содержит бинарные данные изображения, а не путь к файлу или Base64. В make.com для этого используйте модуль HTTP с типом File или конвертируйте изображение через другие модули. Если API ОК ожидает именно файл, передавайте его через multipart/form-data с правильным именем поля.

    3. Обновите session_secret_key

    Сессионный ключ может устареть. Получите новый через метод photos.getUploadUrl или обновите токен. Убедитесь, что ключ соответствует текущей сессии пользователя.

    4. Проверьте подпись запроса (sig)

    Некоторые методы API ОК требуют подписи sig. Если вы её не генерируете, добавьте вычисление подписи на основе параметров запроса. Алгоритм: отсортировать параметры по алфавиту, объединить в строку вида key1=value1key2=value2, добавить session_secret_key, взять MD5.

    Пример исправленного JSON для make.com

    {
        "url": "{{parameters.upload_url}}",
        "method": "POST",
        "headers": {
            "Content-Type": "multipart/form-data"
        },
        "qs": {
            "application_id": "{{connection.application_id}}",
            "application_key": "{{connection.application_key}}",
            "access_token": "{{connection.accessToken}}",
            "session_secret_key": "{{connection.session_secret_key}}"
        },
        "body": {
            "pic1": "{{parameters.imageData}}"
        },
        "response": {
            "output": {
                "response": "{{body}}"
            },
            "valid": {
                "condition": "{{body.photos}}",
                "message": "✅ Фотографии успешно загружены. Фото: {{body.photos}}"
            },
            "error": {
                "message": "[{{statusCode}}] ❌ Ошибка: {{body.error_msg}}"
            }
        },
        "log": {
            "sanitize": [
                "request.qs.access_token",
                "request.qs.sig",
                "request.qs.session_secret_key"
            ]
        }
    }

    Дополнительные советы

    • Используйте модуль HTTP в make.com для теста - если он работает, проблема именно в кастомном модуле.
    • Проверьте, что URL загрузки получен через метод photos.getUploadUrl или photosV2.getUploadUrl.
    • Логируйте полный запрос (без конфиденциальных данных) для отладки.

    Часто задаваемые вопросы