[Google Photos Library API] JavaでGoogleフォトのアルバムを共有・共有解除する

Google Photos Library APIを使用して、
Googleフォトのアルバムを共有・共有解除する方法
についてご紹介します。

共有や共有解除できるアルバムはPhotos Library APIで作成したアルバムのみになります。
アルバムの作成方法は
[⧉[Google Photos Library API] JavaでGoogleフォトのアルバムを作成・更新する](https://qiita.com/doran/items/b5ecc7005f19fbf0a35a)
を参照ください。

:::note info
APIを利用する環境の準備から始める場合や、コードを実行する際は、
[⧉[Google Photos Library API(V1)] JavaでPhotos Library APIを使う](https://qiita.com/doran/items/8695e6007765ab5b382c)
を参照ください。
:::

|No||目次|
|---|---|---|
|1||[共有する](#1-共有する)|
||1|[スコープ](#11-スコープ)|
||2|[実行](#12-実行)|
||3|[レスポンスの内容](#13-レスポンスの内容)|
|2||[共有を解除する](#2-共有を解除する)|
||1|[スコープ](#21-スコープ)|
||2|[実行](#22-実行)|
||3|[レスポンスの内容](#23-レスポンスの内容)|

## 1. 共有する
指定したアルバムを共有します。

共有できるアルバムはPhotos Library APIで作成したアルバムのみになります。
アルバムの作成方法は
[⧉[Google Photos Library API] JavaでGoogleフォトのアルバムを作成・更新する](https://qiita.com/doran/items/b5ecc7005f19fbf0a35a)
を参照ください。

### 1.1. スコープ
このAPIを実行するには、以下のスコープを指定してください。
```
https://www.googleapis.com/auth/photoslibrary.sharing
```
[⧉[Google Photos Library API(V1)] JavaでPhotos Library APIを使う(2.2. PhotosLibraryClientインスタンスを取得)](https://qiita.com/doran/items/8695e6007765ab5b382c#22-photoslibraryclientインスタンスを取得)
でスコープを指定してください。

### 1.2. 実行

```java
public static void main(String[] args) throws Exception{
    try(PhotosLibraryClient client = getPhotosLibraryClient()){
        SharedAlbumOptions.Builder builder = SharedAlbumOptions.newBuilder();
    
        ShareAlbumResponse response = client.shareAlbum("アルバムID",builder.build());
        System.out.println(response);
    }
}
```
#### 1.2.1. HTTPリクエスト
POST:　https:\//photoslibrary.googleapis.com/v1/albums/{albumId}:share
が実行されます。

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

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

|メソッド|引数|説明|
|---|---|---|
|setIsCollaborative|Boolean|共有アルバムで共同編集者にメディアアイテムの追加を許可するか|
|setIsCommentable|Boolean|共有アルバムで共同編集者がアルバムにコメントを追加できるようにするか|

### 1.3. レスポンスの内容
#### ShareAlbumResponse
|メソッド|戻り値|説明|
|---|---|---|
|getShareInfo|[ShareInfo](#shareinfo)|共有アルバムに関する情報|

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

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

## 2. 共有を解除する
指定したアルバムの共有を解除します。

共有解除できるアルバムはGoogle Photos Library APIで作成したアルバムのみになります。
アルバムの作成方法は
[⧉[Google Photos Library API] JavaでGoogleフォトのアルバムを作成・更新する](https://qiita.com/doran/items/b5ecc7005f19fbf0a35a)
を参照ください。

### 2.1. スコープ
このAPIを実行するには、以下のスコープを指定してください。
```
https://www.googleapis.com/auth/photoslibrary.sharing
```
[⧉[Google Photos Library API(V1)] JavaでPhotos Library APIを使う(2.2. PhotosLibraryClientインスタンスを取得)](https://qiita.com/doran/items/8695e6007765ab5b382c#22-photoslibraryclientインスタンスを取得)
でスコープを指定してください。

### 2.2. 実行

```java
public static void main(String[] args) throws Exception{
    try(PhotosLibraryClient client = getPhotosLibraryClient()){
        client.unshareAlbum("アルバムID");
    }
}
```
#### 2.2.1. HTTPリクエスト
POST:　https:\//photoslibrary.googleapis.com/v1/albums/{アルバムID}:unshare
が実行されます。

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

#### 2.2.3. リクエストボディ
リクエストボディはありません。

### 2.3. レスポンスの内容
成功した場合は何も返しません。
失敗した場合は例外を出力します。

<br>
<br>
おしまい。。