Escopos de autorização necessários
A API Google Photos Library contém vários escopos usados para acessar itens de mídia e álbuns. Os itens de mídia retornados de várias chamadas são diferentes com base nos escopos foram solicitados pelo desenvolvedor.
O escopo photoslibrary.readonly
permite acesso a todos os itens de mídia no
biblioteca do usuário. O escopo photoslibrary.readonly.appcreateddata
permite acesso
somente a itens de mídia criados pelo app. Para mais informações, consulte
Escopos de autorização.
Visão geral
Um uso importante da API é listar os itens de mídia que o usuário armazenou em backup para o Google Fotos. Os itens de um determinado álbum ou de todo o conteúdo do usuário biblioteca (a visualização padrão no aplicativo Google Fotos) pode ser listada.
Você pode usar filtros para selecionar fotos. que correspondam a uma data, categoria de conteúdo ou tipo de mídia especificado quando você listar itens da biblioteca do usuário. Este recurso não é compatível quando você lista itens de álbuns.
Listar o conteúdo da biblioteca e do álbum retorna uma lista de itens de mídia.
Melhorias que fazem parte de um álbum
não estão incluídas. Os itens de mídia descrevem uma foto, um vídeo ou outra mídia. Um
mediaItem
inclui um link direto para o item, um link para o item em
Google Fotos e outros metadados relevantes. Para mais informações, consulte
Acessar itens de mídia e
mediaItems
.
Como listar álbuns
Você pode recuperar uma lista dos álbuns do usuário usando albums.list.
REST
Veja um exemplo de solicitação:
GET https://photoslibrary.googleapis.com/v1/albums
A solicitação retorna o seguinte resultado:
{ "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" }
Java
try { // Make a request to list all albums in the user's library // Iterate over all the albums in this list // Pagination is handled automatically ListAlbumsPagedResponse response = photosLibraryClient.listAlbums(); for (Album album : response.iterateAll()) { // Get some properties of an album String id = album.getId(); String title = album.getTitle(); String productUrl = album.getProductUrl(); String coverPhotoBaseUrl = album.getCoverPhotoBaseUrl(); // The cover photo media item id field may be empty String coverPhotoMediaItemId = album.getCoverPhotoMediaItemId(); boolean isWritable = album.getIsWriteable(); long mediaItemsCount = album.getMediaItemsCount(); } } catch (ApiException e) { // Handle error }
PHP
try { // Make a request to list all albums in the user's library // Iterate over all the albums in this list // Pagination is handled automatically $response = $photosLibraryClient->listAlbums(); foreach ($response->iterateAllElements() as $album) { // Get some properties of an album $albumId = $album->getId(); $title = $album->getTitle(); $productUrl = $album->getProductUrl(); $coverPhotoBaseUrl = $album->getCoverPhotoBaseUrl(); // The cover photo media item id field may be empty $coverPhotoMediaItemId = $album->getCoverPhotoMediaItemId(); $isWriteable = $album->getIsWriteable(); $totalMediaItems = $album->getTotalMediaItems(); } } catch (\Google\ApiCore\ApiException $e) { // Handle error }
Cada álbum retornado tem um ID que pode ser usado para recuperar o conteúdo da álbum, conforme mostrado em Como listar o conteúdo do álbum. Ela também inclui o título e o número de itens de mídia que ele contém.
O productUrl
aponta para o álbum no Google Fotos que pode ser um
aberto pelo usuário.
O coverPhotoMediaItemId
contém o item de mídia
ID que
representa a foto da capa do álbum. Para acessar esta imagem de capa, use
coverPhotoBaseUrl
: Não use o coverPhotoBaseUrl
diretamente sem
especificando mais
parâmetros.
Álbuns que foram criados na conta do usuário ou adicionados à conta do usuário
e que seu app compartilhou incluem uma propriedade shareInfo
adicional.
Para mais detalhes, consulte Compartilhar mídia.
Os álbuns também podem ter uma flag isWriteable
para indicar se é possível criar mídia.
itens do álbum. O padrão dessa sinalização será false
se não for retornada. É
dependem do acesso concedido ao aplicativo, incluindo o seguinte:
- Quem criou o álbum.
- Se são compartilhados ou não.
- Quais são os escopos que o usuário aprovou.
Essa sinalização poderá ser alterada se qualquer um desses critérios for alterado. Para mais detalhes, consulte
Crie álbuns. A
resposta também contém um nextPageToken
. Para mais informações, consulte
Paginação.
A resposta para álbuns vazios varia, já que mediaItemsCount
e
coverPhotoMediaItemId
são definidos como 0 por padrão e são omitidos do REST
resposta. coverPhotoBaseUrl
aponta para um marcador de posição padrão
imagem.
Como listar o conteúdo da biblioteca
Você pode listar todos os itens de mídia da biblioteca do Google Fotos do usuário. Ela exclui os itens arquivados e excluídos. É possível listar itens de mídia com base conteúdo, data e outras propriedades aplicando filtros. Se o usuário não tiver adicionado um disponível na guia Compartilhamento do Google Fotos com os , esse item não será incluído na lista.
Para recuperar um item de mídia, chame mediaItems.list.
REST
Veja um exemplo de solicitação:
GET https://photoslibrary.googleapis.com/v1/mediaItems
Content-type: application/json
Authorization: Bearer oauth2-token
{
"pageSize": "100",
}
A solicitação GET retorna a seguinte resposta:
{ "mediaItems": [ ... ], "nextPageToken": "token-for-pagination" }
Java
try { // Make a request to list all media items in the user's library // Iterate over all the retrieved media items // Pagination is handled automatically ListMediaItemsPagedResponse response = photosLibraryClient.listMediaItems(); for (MediaItem item : response.iterateAll()) { // Get some properties of a media item String id = item.getId(); String description = item.getDescription(); String mimeType = item.getMimeType(); String productUrl = item.getProductUrl(); String filename = item.getFilename(); } } catch (ApiException e) { // Handle error }
PHP
try { // Make a request to list all media items in the user's library // Iterate over all the retrieved media items // Pagination is handled automatically $response = $photosLibraryClient->listMediaItems(); foreach ($response->iterateAllElements() as $item) { // Get some properties of a media item /* @var $item \Google\Photos\Library\V1\MediaItem */ $id = $item->getId(); $description = $item->getDescription(); $mimeType = $item->getMimeType(); $productUrl = $item->getProductUrl(); $filename = $item->getFilename(); } } catch (\Google\ApiCore\ApiException $e) { // Handle error }
A resposta contém uma lista de itens de mídia, ordenados do mais recente para o menos recente.
Para saber mais, consulte
mediaItems
. Ela também
contém um nextPageToken
, que é descrito em mais detalhes em
Paginação.
Como listar o conteúdo do álbum
Para listar todos os itens de mídia em um álbum, adicione o campo albumId
à sua
solicitação de pesquisa. Para mais informações sobre albumId
, consulte Listagem
álbuns e Listar álbuns compartilhados. Se
albumId
for inválido, um erro Bad Request
será retornado. Se o ID for válido,
mas o álbum não existe para o usuário autenticado, um erro Not Found
é
retornados. Para mais detalhes sobre a correção de erros,consulte Desempenho
dicas e Melhores
práticas recomendadas.
REST
Veja um exemplo de solicitação:
POST https://photoslibrary.googleapis.com/v1/mediaItems:search
Content-type: application/json
Authorization: Bearer oauth2-token
{
"pageSize": "100",
"albumId": "album-id"
}
A solicitação POST retorna a seguinte resposta:
{ "mediaItems": [ ... ], "nextPageToken": "token-for-pagination" }
Java
try { // Make a request to list all media items in an album // Provide the ID of the album as a parameter in the searchMediaItems call // Iterate over all the retrieved media items SearchMediaItemsPagedResponse response = photosLibraryClient.searchMediaItems(albumId); for (MediaItem item : response.iterateAll()) { // ... } } catch (ApiException e) { // Handle error }
PHP
try { // Make a request to list all media items in an album // Provide the ID of the album as a parameter in the searchMediaItems call // Iterate over all the retrieved media items $response = $photosLibraryClient->searchMediaItems(['albumId' => $albumId]); foreach ($response->iterateAllElements() as $item) { // ... } } catch (\Google\ApiCore\ApiException $e) { // Handle error }
A resposta contém uma nextPageToken
e a lista de itens de mídia. Remover "Gostei" de quando
listando o conteúdo da biblioteca, os itens de mídia são retornados pela ordem na
álbum. Para mais detalhes, consulte
mediaItems
e Paginação. O usuário pode editar o pedido no
Interface do Google Fotos.
Se albumId
estiver definido, não será possível aplicar um filtro ao listar o conteúdo do álbum.
Isso resulta em um erro Bad Request
.
Como listar álbuns compartilhados
Você pode recuperar uma lista de todos os álbuns que o usuário compartilhou ou que foram compartilhados com um usuário. É semelhante à guia "Compartilhamento" app Google Fotos.
Álbuns compartilhados que o usuário adicionou à biblioteca do Google Fotos. também são retornados na chamada de listagens de álbuns. Faça com que seguinte chamada para listar álbuns compartilhados pela API Library:
REST
Veja um exemplo de solicitação:
GET https://photoslibrary.googleapis.com/v1/sharedAlbums
A solicitação retorna o seguinte resultado:
{ "sharedAlbums": [...] "nextPageToken": "token-for-pagination" }
Java
try { // Make a request to list all albums that have been shared by the user // Iterate over all the albums in this list // Pagination is handled automatically ListSharedAlbumsPagedResponse response = photosLibraryClient.listSharedAlbums(); for (Album album : response.iterateAll()) { // .. } } catch (ApiException e) { // Handle error }
PHP
try { // Make a request to list all albums that have been shared by the user // Iterate over all the albums in this list // Pagination is handled automatically $response = $photosLibraryClient->listSharedAlbums(); foreach ($response->iterateAllElements() as $album) { // ... } } catch (\Google\ApiCore\ApiException $e) { // Handle error }
Uma lista de álbuns está incluída em sharedAlbums
. Para mais informações, consulte
Listar álbuns. A resposta também contém um nextPageToken
.
Para mais informações, consulte Paginação.
Os álbuns que seu app criou e compartilhou incluem mais shareInfo
. Para mais detalhes, consulte Compartilhar
mídia.
Como listar álbuns criados pelo app
Você pode listar álbuns que foram criados pelo seu aplicativo com
excludeNonAppCreatedData
definido como true
nas seguintes chamadas:
REST
Esta é uma solicitação GET para listar todos os álbuns da Biblioteca do Google Fotos criada apenas pelo seu app:
GET https://photoslibrary.googleapis.com/v1/albums?excludeNonAppCreatedData=true Content-type: application/json Authorization: Bearer oauth2-token
Esta é uma solicitação GET para listar todos os álbuns compartilhados da Biblioteca do Google Fotos criada apenas pelo seu app:
GET https://photoslibrary.googleapis.com/v1/sharedAlbums?excludeNonAppCreatedData=true Content-type: application/json Authorization: Bearer oauth2-token
Java
try { // Make a request to list all albums that have been created by your app boolean excludeNonAppCreatedData = true; // Iterate over all the albums in this list // Pagination is handled automatically ListAlbumsPagedResponse response = photosLibraryClient.listAlbums(excludeNonAppCreatedData); for (Album album : response.iterateAll()) { // .. } } catch (ApiException e) { // Handle error } try { // Make a request to list all shared albums that have been created by your app boolean excludeNonAppCreatedData = true; // Iterate over all the albums in this list // Pagination is handled automatically ListSharedAlbumsPagedResponse response = photosLibraryClient.listSharedAlbums(excludeNonAppCreatedData); for (Album album : response.iterateAll()) { // .. } } catch (ApiException e) { // Handle error }
PHP
try { // Make a request to list all albums that have been created by your app $response = $photosLibraryClient->listAlbums(['excludeNonAppCreatedData' => true]); // Iterate over all the albums in this list // Pagination is handled automatically foreach ($response->iterateAllElements() as $album) { // ... } } catch (\Google\ApiCore\ApiException $e) { // Handle error } try { // Make a request to list all shared albums that have been created by your app $response = $photosLibraryClient->listSharedAlbums(['excludeNonAppCreatedData' => true]); // Iterate over all the albums in this list // Pagination is handled automatically foreach ($response->iterateAllElements() as $album) { // ... } } catch (\Google\ApiCore\ApiException $e) { // Handle error }
Paginação para REST
Para melhorar o desempenho, os métodos que retornam um grande número de resultados (como
list) podem paginar a resposta. O número máximo de resultados em cada
é fornecida pelo parâmetro pageSize
.
Em chamadas para mediaItems:search
e mediaItems:list
, o tamanho de página padrão é
25 itens. Recomendamos esse tamanho de página porque ele estabelece um equilíbrio entre as
o tamanho da resposta e a taxa de preenchimento. O tamanho máximo da página para o item de mídia
pesquisar e listar solicitações é de 100 itens.
O tamanho de página padrão e recomendado para a listagem de álbuns é de 20 álbuns, com um no máximo 50 álbuns.
Quando o número de resultados disponíveis é maior que o tamanho da página, a resposta
inclui um nextPageToken
, que indica ao aplicativo que há
mais resultados sejam buscados no servidor.
Exemplo
Anexe o nextPageToken
às solicitações subsequentes no parâmetro
pageToken
, conforme mostrado no exemplo abaixo. Especifique os pageToken
juntos
com outros parâmetros necessários para a operação, seja no corpo do
ou como parâmetro de consulta.
Solicitação no 1
{ "pageSize": "5", "filters": { … } }
Resposta 1
{ "mediaItem": [ … ], "nextPageToken": "next-page-token" }
Solicitação no 2
{ "pageSize": "5", "filters": { … }, "pageToken": "page-token" }
Resposta 2
{ "mediaItem": [ … ], "nextPageToken": "next-page-token" }
Continue esse padrão até que não haja mais objetos nextPageToken
.
O nextPageToken
só é válido para a mesma solicitação. Se algum parâmetro for
alterado, um nextPageToken
usado anteriormente não pode ser usado na mesma
solicitação.