0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[Google Photos Library API] JavaでGoogleフォトのアルバムを作成・更新する

Posted at

Google Photos Library API(Java)を使用して、
Googleフォトのアルバムを作成・更新・削除する方法
についてご紹介します。

アルバムはGoogleフォトアプリのアルバムタブから確認することができます。

APIを利用する環境の準備から始める場合や、コードを実行する際は、
⧉[Google Photos Library API(V1)] JavaでPhotos Library APIを使う
を参照ください。

No 目次
1 アルバムを作成
1 スコープ
2 実行
3 レスポンスの内容
2 アルバムを更新
1 スコープ
2 実行
3 レスポンスの内容

1. アルバムを作成

アルバムを作成します。

1.1. スコープ

このAPIを実行するには、以下のいずれかのスコープを指定してください。

https://www.googleapis.com/auth/photoslibrary
https://www.googleapis.com/auth/photoslibrary.appendonly
https://www.googleapis.com/auth/photoslibrary.sharing

⧉[Google Photos Library API(V1)] JavaでPhotos Library APIを使う(2.2. PhotosLibraryClientインスタンスを取得)
でスコープを指定してください。

1.2. 実行

public static void main(String[] args) throws Exception{
    try(PhotosLibraryClient client = getPhotosLibraryClient()){
        Album.Builder builder = Album.newBuilder();
        builder.setTitle("アルバムタイトル");
        
        Album response = client.createAlbum(builder.build());
        System.out.println(response);
    }
}

1.2.1. HTTPリクエスト

POST: https://photoslibrary.googleapis.com/v1/albums
が実行されます。

1.2.2. クエリパラメータ

クエリパラメータはありません。

1.2.3. リクエストボディ

Album.Builderのsetメソッドにより、リクエストボディを追加できます。
build()メソッドでAlbumインスタンスを取得し、
createAlbum()に渡します。

メソッド 引数 説明
setId String アルバムID
setTitle String アルバムのタイトル
setCoverPhotoMediaItemId String カバー写真に関連付けられているメディアアイテムID

1.3. レスポンスの内容

Album

メソッド 戻り値 説明
getId String アルバムID
getTitle String アルバムの名前
getProductUrl String アルバムのGoogleフォトURL
getIsWriteable Boolean アルバム内にメディアアイテムを作成できるか
getShareInfo ShareInfo 共有アルバムに関する情報
getMediaItemsCount Long アルバム内のメディアアイテム数
getCoverPhotoBaseUrl String カバー写真のバイトへのURL
getCoverPhotoMediaItemId String カバー写真に関連付けられているメディアアイテムID

ShareInfo

メソッド 戻り値 説明
getSharedAlbumOptions SharedAlbumOptions メディアアイテムの追加やコメントを許可するか
getShareableUrl String 共有のGoogleフォトアルバムへのリンク
getShareToken String 共有アルバムへの参加、共有アルバムからの退出、または詳細の取得に使用するトークン
getIsJoined Boolean ユーザーがアルバムに参加しているか
getIsOwned Boolean ユーザーがアルバムを所有しているか
getIsJoinable Boolean ユーザーがアルバムに参加できるか

SharedAlbumOptions

メソッド 戻り値 説明
getIsCollaborative Boolean 共有アルバムで共同編集者にメディアアイテムの追加を許可するか
getIsCommentable Boolean 共有アルバムで共同編集者がアルバムにコメントを追加できるようにするか

2. アルバムを更新

指定したアルバムを更新します。

更新できるアルバムは、Photos Library APIで作成したアルバムのみになります。

2.1. スコープ

このAPIを実行するには、以下のスコープを指定してください。

https://www.googleapis.com/auth/photoslibrary.edit.appcreateddata

⧉[Google Photos Library API(V1)] JavaでPhotos Library APIを使う(2.2. PhotosLibraryClientインスタンスを取得)
でスコープを指定してください。

2.2. 実行

public static void main(String[] args) throws Exception{
    try(PhotosLibraryClient client = getPhotosLibraryClient()){
        Album.Builder builder = Album.newBuilder();
        builder.setId("アルバムID");
        builder.setTitle("タイトル名");
        FieldMask.Builder fbuilder = FieldMask.newBuilder();
        fbuilder.addPaths("title");
        
        Album response = client.updateAlbum(builder.build(),fbuilder.build());
        System.out.println(response);
    }
}

2.2.1. HTTPリクエスト

PATCH: https://photoslibrary.googleapis.com/v1/albums/{アルバムID}
が実行されます。

2.2.2. クエリパラメータ

クエリパラメータはありません。

2.2.3. リクエストボディ

Album.Builderのsetメソッドにより、リクエストボディを追加できます。
build()メソッドでAlbumインスタンスを取得し、
updateAlbum()に渡します。

field メソッド 引数 説明
- setId String 【必須】アルバムID
title setTitle String アルバムの名前
coverPhotoMediaItemId setCoverPhotoMediaItemId String カバー写真に関連付けられているメディアアイテムID

更新したいフィールドをFieldMask.Builderのsetメソッドにより追加します。
更新可能なフィールドは「title」と「coverPhotoMediaItemId」のみです。
build()メソッドでFieldMaskインスタンスを取得し、updateAlbum()に渡します。

メソッド 引数 説明
addPaths String 【必須】更新するフィールド

2.3. レスポンスの内容

Album

1.3. レスポンスの内容(Album)と同じです。



おしまい。。
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?