Требуемые области авторизации
Для просмотра содержимого, созданного приложением, требуется область данных photoslibrary.readonly.appcreateddata
. Дополнительные сведения об областях см. в разделе Области авторизации .
Обзор
API библиотеки позволяет вам перечислять и получать доступ к элементам мультимедиа, созданным вашим приложением.
Некоторые ключевые особенности листинга медиа-элементов включают следующее:
- Список медиа-элементов из определенных альбомов, созданных приложением, или всей библиотеки, созданной приложением.
Применяйте фильтры (дата, категория контента, тип носителя) при листинге, чтобы сузить результаты.
Извлекайте объекты
mediaItem
с важными сведениями, такими как прямые ссылки и метаданные.
При просмотре содержимого библиотеки и альбома возвращается список мультимедийных элементов. Дополнения , являющиеся частью альбома, не включаются. Элементы мультимедиа описывают фотографию, видео или другой медиафайл. mediaItem
включает прямую ссылку на объект, ссылку на объект в Google Фото и другие соответствующие метаданные. Дополнительные сведения см. в разделе Доступ к элементам мультимедиа и mediaItems
.
Получение списка альбомов, созданных приложением
Вы можете перечислить альбомы, созданные вашим приложением, с помощью albums.list
.
ОТДЫХ
Вот пример запроса:
GET https://photoslibrary.googleapis.com/v1/albums
Запрос возвращает следующий результат:
{ "albums": [ { "id": "album-id", "title": "album-title", "productUrl": "album-product-url", "coverPhotoBaseUrl": "album-cover-base-url_do-not-use-directly", "coverPhotoMediaItemId": "album-cover-media-item-id", "isWriteable": "whether-you-can-write-to-this-album", "mediaItemsCount": "number-of-media-items-in-album" }, ... ], "nextPageToken": "token-for-pagination" }
У каждого возвращенного альбома есть идентификатор, который можно использовать для получения содержимого альбома, как показано в списке содержимого альбома . Он также включает заголовок и количество содержащихся в нем мультимедийных элементов.
productUrl
указывает на альбом в Google Фото, который может открыть пользователь.
coverPhotoMediaItemId
содержит идентификатор медиа-элемента , который представляет фотографию обложки этого альбома. Чтобы получить доступ к этому изображению обложки, используйте coverPhotoBaseUrl
. Не следует использовать coverPhotoBaseUrl
напрямую без указания дополнительных параметров .
Ответ также содержит nextPageToken
. Для получения дополнительной информации см. Пагинация .
Ответ для пустых альбомов различается тем, что mediaItemsCount
и coverPhotoMediaItemId
по умолчанию установлено значение 0, и они не включаются в ответ REST. Также обратите внимание, что coverPhotoBaseUrl
указывает на изображение-заполнитель по умолчанию.
Получение списка содержимого библиотеки, созданной приложением
Вы можете перечислить все медиа-элементы из библиотеки Google Фото пользователя, созданные вашим приложением. Это исключает заархивированные и удаленные элементы. Вы можете составлять список элементов мультимедиа на основе их содержания, даты и других свойств, применяя фильтры .
Чтобы вывести список элементов мультимедиа, вызовите mediaItems.list
.
ОТДЫХ
Вот пример запроса:
GET https://photoslibrary.googleapis.com/v1/mediaItems
Content-type: application/json
Authorization: Bearer oauth2-token
{
"pageSize": "100",
}
Запрос GET возвращает следующий ответ:
{ "mediaItems": [ ... ], "nextPageToken": "token-for-pagination" }
Ответ содержит список медиа-элементов, упорядоченный от самых последних к последним. Дополнительные сведения см. в mediaItems
. Он также содержит nextPageToken
, который более подробно описан в разделе «Разбиение на страницы» .
Список содержимого альбома
Чтобы перечислить все элементы мультимедиа в альбоме, добавьте поле albumId
в свой поисковый запрос. Дополнительные сведения об albumId
см. в разделе Список альбомов . Если albumId
недействителен, возвращается ошибка Bad Request
. Если идентификатор действителен, но альбом не существует для аутентифицированного пользователя, возвращается ошибка Not Found
. Дополнительные сведения об обработке ошибок см. в разделах «Советы по производительности» и «Рекомендации» .
ОТДЫХ
Вот пример запроса:
POST https://photoslibrary.googleapis.com/v1/mediaItems:search
Content-type: application/json
Authorization: Bearer oauth2-token
{
"pageSize": "100",
"albumId": "album-id"
}
Запрос POST возвращает следующий ответ:
{ "mediaItems": [ ... ], "nextPageToken": "token-for-pagination" }
Ответ содержит nextPageToken
и список элементов мультимедиа. В отличие от перечисления содержимого библиотеки, элементы мультимедиа возвращаются в порядке их расположения в альбоме. Дополнительные сведения см. в mediaItems
и Pagination . Пользователь может редактировать порядок в интерфейсе Google Фото.
Если albumId
установлен, вы не сможете применить фильтр при отображении содержимого альбома. Это приведет к ошибке Bad Request
.
Пагинация для REST
Для повышения производительности методы, возвращающие большое количество результатов (например, методы списка), могут разбивать ответ на страницы. Максимальное количество результатов на каждой странице задается параметром pageSize
.
Для вызовов mediaItems.search
и mediaItems.list
размер страницы по умолчанию составляет 25 элементов. Мы рекомендуем этот размер страницы, поскольку он обеспечивает баланс между размером ответа и скоростью заполнения. Максимальный размер страницы для поиска медиа-элементов и запросов списков составляет 100 элементов.
По умолчанию и рекомендуемый размер страницы при перечислении альбомов составляет 20 альбомов, максимум 50 альбомов.
Если количество доступных результатов превышает размер страницы, ответ включает в себя nextPageToken
, который указывает вашему приложению, что с сервера необходимо получить больше результатов.
Пример
Вы должны добавить nextPageToken
к последующим запросам в параметре pageToken
, как показано в следующем примере. Укажите pageToken
вместе с другими параметрами, необходимыми для операции, либо в тексте запроса, либо в качестве параметра запроса.
Запрос №1
{ "pageSize": "5", "filters": { … } }
Ответ №1
{ "mediaItem": [ … ], "nextPageToken": "next-page-token" }
Запрос №2
{ "pageSize": "5", "filters": { … }, "pageToken": "page-token" }
Ответ №2
{ "mediaItem": [ … ], "nextPageToken": "next-page-token" }
Продолжайте этот шаблон до тех пор, пока не останется объектов nextPageToken
.
nextPageToken
действителен только для одного и того же запроса. Если какие-либо параметры изменены, ранее использованный nextPageToken
не должен использоваться в том же запросе.