Загрузка изображений через API от лица приложения
Любая игра или приложение может загружать изображения в Одноклассники без привязки к пользователю и, соответственно, без запроса у пользователя прав на загрузку изображений.
Традиционный процесс загрузки изображения в игре или приложении выглядит так:
- приложение добавляет право PHOTO_CONTENT в настройках в список необходимых прав;
- приложение запрашивает у пользователя право PHOTO_CONTENT через метод FAPI.UI.showPermissions;
- если пользователь отказал в выдаче права, то приложение не может загрузки изображение;
- если пользователь согласился предоставить это право, то вы можете загружать изображения от его лица.
- у изображений, загружаемых таким образом, есть ряд ограничений. Например, для каждого пользователя надо грузить отдельное изображение.
Механизм загрузки изображений от лица игры избавляет вас от необходимости запрашивать у пользователя права, а также позволяет использовать эти изображения для любых пользователей.
Эти изображения, например, вы можете использовать в таких механиках как публикация момента через метод FAPI.UI.postMediatopic, либо публикация момента через API-метод moments.commit.
Кроме самой загрузки новых изображений вы также можете:
- получать все изображения, загруженные в альбом приложения;
- получать изображение по его id;
- удалять приложение.
API для работы с изображениями
Для работы с API изображений вам доступны методы группы appext, а именно:
- appext.appPhotoGetUploadUrl - для получения URL, на который затем производится загрузка изображения;
- appext.appPhotoCreate - для добавления загруженного изображения в альбом приложения;
- appext.appPhotoDelete - для удаления загруженного изображения;
- appext.appPhotosGet - для получения всего списка изображений в альбоме приложения;
- appext.appPhotosGetById - для получения изображения из альбома приложения по его id.
На данный момент у каждого приложения может быть не более 100 загруженных в альбом изображений. Этот лимит может быть пересмотрен в будущем
Пример загрузки изображения
Процесс загрузки нового изображения производится в 3 этапа:
- Получение URL для загрузки изображения.
- Загрузка изображения.
- Сохранение изображения в альбом приложения.
Этап 1. Получение URL для загрузки изображения
URL вы можете получить через метод appext.appPhotoGetUploadUrl.
Ответ метода выглядит так:
Где:
- upload_url - URL, на который необходимо загрузить изображение;
- photo_ids - идентификатор изображения;
- expires_ms - время жизни URL для загрузки изображения.
Этап 2. Загрузка изображения
Загрузка изображения осуществляется через POST-запрос на URL, полученный на первом этапе.
Пример загрузки выглядит так:
При успешной загрузке вы получите следующий ответ:
Где:
- ключ - id загруженного изображения;
- token - токен для загрузки изображения.
Оба этих параметра нужно запомнить, так как они используются для сохранения изображения на третьем этапе.
Этап 3. Сохранение изображения в альбом приложения
После успешной загрузки изображения вам остается его только сохранить с помощью метода appext.appPhotoCreate.
В параметре photo этого метода передается id и token, полученные в предыдущем этапе:
Если сохранение пройдет успешно, то в ответе методы вы получите статичную ссылку на изображение, а также его финальный id.