Примеры приложений
Код примера открыт и доступен на github
Пример с использованием внешнего JS SDK для создания топика с фото.
Загрузка фотографий на сервер является одной из сложно реализуемых задач при использовании API Одноклассников.
Она состоит из нескольких шагов, которые рассмотрим далее.
Шаг 1 – получение URL для загрузки фотографий.
Для этого используется метод photosV2.getUploadUrl. У метода есть несколько настроек, подробнее о которых можно прочитать в его описании.
Так как загрузка производится для определенного пользователя, то понадобится либо access_token, либо session_key, а также разрешение PHOTO_CONTENT от пользователя.
После выполнения запроса к API получаем ответ, в котором указаны будущие id фотографий, url для загрузки и expires.
Выполнив этот метод, можно перейти к следующему.
В примере этот метод вызывается при нажатии на кнопку “Draw”. Получив url для загрузки, мы подставляем его и рисуем форму.
Шаг 2 – загрузка фотографий через HTTP POST
Непосредственная загрузка фотографий производится на upload_url из первого шага.
Следующий фрагмент HTML-кода можно использовать для добавления 3 изображений:
Заполнители
Можно запросить множество идентификаторов фотографий на первом шаге с помощью метода photosV2.getUploadUrl, но загружать содержимое более мелкими партиями. Для этого нужно запросить URL для добавления с заполнителями, затем заменить заполнитель соответствующим значением.
Заполнитель | Должен быть заменен |
---|---|
${photoIds} | Должен быть заменен на список идентификаторов фотографий, которые требуется добавить. Идентификаторы фотографий должны разделяться символом запятой (,). |
Ответ
Ответ содержит набор идентификаторов фотографий, для каждого из которых предоставляется маркер.
Примечание
Метод всегда отправляет ответ в формате JSON. Нет возможности запросить ответ в формате XML.
Возможные ошибки
Код ошибки | Причина |
---|---|
PHOTO_SIZE_LIMIT_EXCEEDED | Размер двоичного содержимого изображения в байтах превышает предел |
PHOTO_SIZE_TOO_SMALL | Слишком маленький размер изображения в пикселях |
PHOTO_SIZE_TOO_BIG | Слишком большой размер изображения в пикселях |
PHOTO_INVALID_FORMAT | Невозможно распознать формат изображения |
PHOTO_IMAGE_CORRUPTED | Формат изображения распознан, но содержимое повреждено |
PHOTO_NO_IMAGE | В запросе не найдено изображение |
Полный список возможных ошибок с кодами можно посмотреть на странице Обработка ошибок.
Примеры
В приведенном примере при нажатии на кнопку “Отправить” ajax-запросом происходит загрузка фотографий на необходимый url.
По получению результата переходим к следующему шагу.
При использовании загрузки фотографий для добавления медиатопика, объявления или каталога объявлений шаг 3 производить не надо.
Вам понадобится параметр token, который пришел в ответ на шаг 2.
Шаг 3 – завершение добавления фотографий.
В последнюю очередь необходимо вызвать метод photosV2.commit.
Он завершает загрузку фотографий и позволяет добавить желаемую мета-информацию к ним (например, комментарий).
Для использования метода понадобятся id загруженных фотографий и маркеры token.
Более подробно можно прочитать в описании метода.
В нашем примере по окончанию отправки данных в двоичном виде вызовется функция завершения загрузки.
Для этого мы пройдем по массиву из фотографий, полученному от шага 2, и вызовем для них photosV2.commit.
По получении ответа проверяем, что статус загрузки каждой из фотографий SUCCESS и выдаем оповещение, что загрузка прошла успешно. Иначе - сообщение, что загрузка не удалась.