ライブラリのコンテンツ、アルバム、メディア アイテムを一覧表示する

必要な認可スコープ

Google Photos Library 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"
}

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
}

返された各アルバムには ID があり、その ID を使用して、 アルバムのコンテンツを一覧表示するをご覧ください。また、 タイトルと、そこに含まれるメディア アイテムの数が含まれます。

productUrl は、Google フォト内のアルバムを指します。これは、 表示されます。

coverPhotoMediaItemId には、メディア アイテムが格納されます。 ID です。 は、このアルバムのカバー写真を表します。このカバー画像にアクセスするには、次のコマンドを使用します。 coverPhotoBaseUrlcoverPhotoBaseUrl を直接使用せずに、使用しないでください。 追加の パラメータ

ユーザーのアカウントで作成されたアルバム、またはユーザーのアカウントに追加されたアルバム アプリが共有している連絡先に、追加の 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"
}

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
}

レスポンスには、新しい順に並べられたメディア アイテムのリストが含まれます。 詳細については、次をご覧ください: 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"
}

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
}

レスポンスには、nextPageToken とメディア アイテムのリストが含まれます。次の場合に高評価を取り消します メディア アイテムは、 できます。詳しくは、 mediaItems ページ分け。お客様は Google フォトのインターフェース。

albumId が設定されている場合、アルバムのコンテンツをリストするときにフィルタを適用することはできません。 この操作を行うと、Bad Request エラーが発生します。

共有アルバムを一覧表示する

ユーザーが共有したアルバムや、 ユーザーと共有されています。これは Google Chat の Google フォト アプリ。

ユーザーが Google フォト ライブラリに追加した共有アルバム listingAlbum 呼び出しでも返されます。まず、 次の呼び出しを使用して、Library API を使用して共有アルバムを一覧表示します。

REST

以下はリクエストのサンプルです。

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

このリクエストでは次の結果が返されます。

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

アルバムのリストは sharedAlbums に含まれます。詳細については、次をご覧ください: アルバムを一覧表示するレスポンスには nextPageToken も含まれます。 詳細については、ページ分けをご覧ください。

このアプリが作成して共有したアルバムには、shareInfoが含まれています プロパティです。詳しくは、共有 メディア

アプリが作成したアルバムを一覧表示する

アプリで作成されたアルバムは、 次の呼び出しでは、excludeNonAppCreatedDatatrue に設定します。

REST

これは、ユーザーの全アルバムを そのアプリのみで作成される Google フォト ライブラリ:

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

以下は、ユーザーのすべての共有アルバムを そのアプリのみで作成される Google フォト ライブラリ:

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
}

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 を同じ リクエストできます。