라이브러리 콘텐츠, 앨범, 미디어 항목 나열

필수 승인 범위

Google 포토 라이브러리 API에는 미디어 항목 및 앨범에 액세스하는 데 사용되는 여러 범위가 포함되어 있습니다. 다양한 호출에서 반환된 미디어 항목은 범위에 따라 다릅니다. 개발자가 요청한 경우

photoslibrary.readonly 범위를 사용하면 사용자 라이브러리로 이동합니다. photoslibrary.readonly.appcreateddata 범위를 사용하면 앱에서 만든 미디어 항목에만 적용됩니다. 자세한 내용은 승인 범위.

개요

API의 중요한 용도는 사용자가 백업한 미디어 항목을 나열하는 것입니다. Google 포토로 이동합니다. 특정 앨범 또는 사용자 전체의 항목 라이브러리 (Google 포토 앱의 기본 보기)가 나열될 수 있습니다.

필터를 사용하여 사진을 선택할 수 있습니다. 항목을 나열할 때 지정된 날짜, 콘텐츠 카테고리 또는 미디어 유형과 일치하는 항목입니다. 가져올 수 있습니다. 이 기능은 다음의 항목을 나열하는 경우 지원되지 않습니다. 앨범.

라이브러리와 앨범 콘텐츠를 나열하면 미디어 항목 목록이 반환됩니다. 앨범에 포함된 보강 기능 포함되어 있지 않습니다. 미디어 항목은 사진, 동영상 또는 기타 미디어를 설명합니다. 가 mediaItem에는 항목으로 연결되는 직접 링크와 Google 포토 및 기타 관련 메타데이터가 포함됩니다. 자세한 내용은 미디어 항목에 액세스 mediaItems

앨범 나열

다음 명령어를 사용하여 사용자 앨범 목록을 검색할 수 있습니다. albums.list.

REST

샘플 요청은 다음과 같습니다.

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"
}

자바

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
}

반환된 각 앨범에는 앨범 콘텐츠 목록에 나온 대로 앨범을 선택합니다. 또한 에는 제목과 포함된 미디어 항목의 개수가 포함됩니다.

productUrl는 Google 포토에서 확인할 수 있습니다

coverPhotoMediaItemId에는 미디어 항목이 포함됩니다. ID가 은 이 앨범의 표지 사진을 나타냅니다. 이 표지 이미지에 액세스하려면 다음을 사용하세요. coverPhotoBaseUrl coverPhotoBaseUrl를 추가적인 매개변수를 사용하세요.

사용자의 계정에서 만들었거나 사용자의 추가 shareInfo 속성을 포함해야 합니다. 자세한 내용은 미디어 공유하기를 참고하세요.

앨범에는 미디어를 만들 수 있는지 나타내는 isWriteable 플래그가 있을 수도 있습니다. 있습니다. 반환되지 않으면 이 플래그는 기본적으로 false로 설정됩니다. 그것은 다음을 포함하여 애플리케이션에 부여된 액세스 권한에 따라 다릅니다.

  • 앨범을 만든 사용자
  • 공유 여부
  • 사용자의 범위 이(가) 승인되었습니다.

이러한 기준 중 하나라도 변경되면 이 플래그가 변경될 수 있습니다. 자세한 내용은 앨범 만들기 이 응답에는 nextPageToken도 포함됩니다. 자세한 내용은 페이지로 나누기

빈 앨범에 대한 응답은 mediaItemsCountcoverPhotoMediaItemId는 기본적으로 0으로 설정되며 REST에서 생략됩니다. 있습니다. 또한 coverPhotoBaseUrl는 기본 자리표시자를 가리킵니다. 이미지

라이브러리 콘텐츠 나열

사용자의 Google 포토 라이브러리에 있는 모든 미디어 항목을 나열할 수 있습니다. 보관처리된 항목과 삭제된 항목은 제외됩니다. 광고 단위를 기준으로 미디어 항목을 날짜, 기타 속성을 적용하여 필터를 참조하세요. 사용자가 Google 포토의 공유 탭에 있는 해당 항목은 이 목록에 포함되지 않습니다.

미디어 항목을 가져오려면 다음을 호출합니다. mediaItems.list.

REST

샘플 요청은 다음과 같습니다.

GET https://photoslibrary.googleapis.com/v1/mediaItems
Content-type: application/json
Authorization: Bearer oauth2-token
{
  "pageSize": "100",
}

GET 요청은 다음과 같은 응답을 반환합니다.

{
  "mediaItems": [
    ...
  ],
  "nextPageToken": "token-for-pagination"
}

자바

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
}

응답에는 미디어 항목 목록이 최신 항목부터 포함되어 있습니다. 자세한 내용은 mediaItems를 참고하세요. 또한 에 nextPageToken가 포함되어 있습니다. 자세한 내용은 다음 도움말을 참고하세요. 페이지로 나누기.

앨범 콘텐츠 나열

앨범의 모든 미디어 항목을 나열하려면 albumId 필드를 다음과 같이 추가합니다. 검색 요청을 수행합니다. albumId에 대한 자세한 내용은 목록을 참조하세요. 앨범공유 앨범 나열을 선택합니다. 만약 albumId가 유효하지 않으면 Bad Request 오류가 반환됩니다. ID가 유효하면 인증된 사용자의 앨범이 존재하지 않는 경우 Not Found 오류는 다음과 같습니다. 반환합니다. 오류 처리에 관한 자세한 내용은 성능을 참조하세요. 도움말권장사항 권장사항을 참고하세요.

REST

샘플 요청은 다음과 같습니다.

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"
}

자바

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
}

응답에는 nextPageToken와 미디어 항목 목록이 포함됩니다. 좋아요 취소 나열하는 경우 미디어 항목은 앨범 자세한 내용은 mediaItems 드림 및 페이지로 나누기를 참조하세요. 사용자는 다음에서 주문을 수정할 수 있습니다. Google 포토 인터페이스

albumId로 설정하면 앨범 콘텐츠를 나열할 때 필터를 적용할 수 없습니다. 그렇게 하면 Bad Request 오류가 발생합니다.

공유 앨범 나열

사용자가 공유했거나 이전에 업로드한 모든 앨범의 목록을 사용자와 공유할 수 있습니다. 이 옵션은 탭에 있는 공유 탭과 Google 포토 앱

사용자가 Google 포토 라이브러리에 추가한 공유 앨범 앨범 나열 호출에서도 반환됩니다. 먼저 라이브러리 API를 통해 공유 앨범을 나열하는 다음 호출입니다.

REST

샘플 요청은 다음과 같습니다.

GET https://photoslibrary.googleapis.com/v1/sharedAlbums

요청은 다음 결과를 반환합니다.

{
  "sharedAlbums": [...]
  "nextPageToken": "token-for-pagination"
}

자바

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
}

앨범 목록은 sharedAlbums에 포함되어 있습니다. 자세한 내용은 앨범 나열. 응답에는 nextPageToken도 포함됩니다. 자세한 내용은 페이지로 나누기를 참고하세요.

앱에서 만들고 공유한 앨범에 추가 shareInfo이(가) 포함되어 있습니다. 속성 자세한 내용은 공유하기 미디어라고 합니다.

앱에서 만든 앨범 나열

앱에서 만든 앨범은 다음 호출에서 excludeNonAppCreatedDatatrue로 설정합니다.

REST

다음은 사용자의 모든 앨범을 나열하기 위한 GET 요청입니다. 내 앱에서만 생성한 Google 포토 라이브러리:

GET https://photoslibrary.googleapis.com/v1/albums?excludeNonAppCreatedData=true
Content-type: application/json
Authorization: Bearer oauth2-token

다음은 사용자의 모든 공유 앨범을 나열하기 위한 GET 요청입니다. 내 앱에서만 생성한 Google 포토 라이브러리:

GET https://photoslibrary.googleapis.com/v1/sharedAlbums?excludeNonAppCreatedData=true
Content-type: application/json
Authorization: Bearer oauth2-token

자바

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
}

REST용 페이지로 나누기

성능을 개선하기 위해 많은 수의 결과 (예: list 메서드)를 사용하여 응답을 페이지로 나눌 수 있습니다. 각 인스턴스의 최대 결과 수입니다. 페이지는 pageSize 매개변수로 지정됩니다.

mediaItems:searchmediaItems: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를 동일한 객체에 사용해서는 안 됩니다. 합니다.