Bagikan media

Album yang dibuat oleh aplikasi Anda dapat dibagikan antar-pengguna, dengan opsi untuk mengizinkan yang dapat dikomentari, atau menyumbangkan item media mereka sendiri ke album.

Untuk membagikan album melalui Google Photos Library API, aplikasi Anda perlu melakukan hal berikut:

  1. Buat album atas nama pengguna.
  2. Setel album tersebut ke dibagikan.

Cakupan autentikasi yang diperlukan

Untuk membagikan konten, aplikasi Anda harus meminta photoslibrary.sharing cakupan otorisasi.

Membagikan album

Sebelum membagikan album, pertimbangkan pertimbangan berikut:

  • Aplikasi Anda hanya dapat membagikan album yang telah dibuatnya. Album yang dibuat oleh aplikasi lain, termasuk Google Foto, tidak dapat dibagikan oleh aplikasi.
  • Saat aplikasi Anda membagikan album melalui Library API, URL yang dapat dibagikan akan dibuat sehingga dapat digunakan oleh siapa pun untuk mengakses album tersebut.
  • Untuk album yang dibagikan melalui API, pemilik album dapat nonaktifkan berbagi link atau membatalkan berbagi album di aplikasi Google Foto, yang berpotensi mencegah mencegah aplikasi bergabung dengan pengguna baru.

Untuk membagikan album:

  1. Ikuti Panduan UX dan mendapatkan izin eksplisit dari pengguna untuk membuat album bersama.
  2. Buat album, dan merekam albumId-nya. Jika sudah membuat album, Anda dapat mengambil albumId-nya dengan mencantumkan album pengguna.
  3. Panggil albums.share menggunakan albumId yang relevan, beserta opsi berbagi yang Anda inginkan atur.
  4. Rekam shareToken nilai dalam respons. Token berbagi adalah ID untuk album bersama yang dapat digunakan di berbagai akun pengguna yang berbeda.
  5. Pengguna lain kini bisa melakukan autentikasi dengan aplikasi Anda, kemudian gabung, keluar, atau ambil detailnya dari album bersama menggunakan shareToken-nya.

Opsi berbagi

Opsi berikut dapat disetel saat berbagi album menggunakan sharedAlbumOptions . Jika opsi tidak ditetapkan secara eksplisit, nilai default akan digunakan.

Properti Nilai default Deskripsi
isCollaborative false Menetapkan apakah pengguna Google Foto lainnya dapat menambahkan konten ke album bersama.
isCommentable false Menetapkan apakah pengguna Google Foto lain dapat mengomentari album bersama.

Contoh permintaan

Permintaan berikut membagikan album dengan memanggil albums.share beserta opsi. J Properti shareInfo akan ditampilkan dalam respons yang menjelaskan atribut berbagi properti.

REST

Berikut adalah header permintaan POST untuk membagikan album:

POST https://photoslibrary.googleapis.com/v1/albums/album-id:share
Content-type: application/json
Authorization: Bearer oauth2-token

Dalam isi permintaan, tentukan opsi berbagi.

{
  "sharedAlbumOptions": {
    "isCollaborative": "true",
    "isCommentable": "true"
  }
}

Permintaan ini akan menampilkan respons berikut:

{
  "shareInfo": {
    "sharedAlbumOptions": {
      "isCollaborative": "true",
      "isCommentable": "true"
    },
    "shareableUrl": "shareable-url",
    "shareToken": "share-token",
    "isJoinable": "true-if-users-can-join-album",
    "isJoined": "true-if-user-is-joined-to-album",
    "isOwned": "true-if-user-owns-album"
  }
}

Java

try {

  SharedAlbumOptions options =
          // Set the options for the album you want to share
          SharedAlbumOptions.newBuilder()
          .setIsCollaborative(true)
          .setIsCommentable(true)
          .build();
  ShareAlbumResponse response = photosLibraryClient.shareAlbum(albumId, options);

  // The response contains the shareInfo object, a url, and a token for sharing
  ShareInfo info = response.getShareInfo();
  // Link to the shared album
  String url = info.getShareableUrl();
  String shareToken = info
  // The share token which other users of your app can use to join the album you shared
      .getShareToken();
  SharedAlbumOptions sharedOptions = info
      // The options set when sharing this album
      .getSharedAlbumOptions();

} catch (ApiException e) {
  // Handle error
}

PHP

// Set the options for the album you want to share
$options = new SharedAlbumOptions();
$options->setIsCollaborative(true);
$options->setIsCommentable(true);
try {
    $response = $photosLibraryClient->shareAlbum($albumId, ['sharedAlbumOptions' => $options]);
    // The response contains the shareInfo object, a url, and a token for sharing
    $shareInfo = $response->getShareInfo();
    // Link to the shared album
    $url = $shareInfo->getShareableUrl();
    // The share token which other users of your app can use to join the album you shared
    $shareToken = $shareInfo->getShareToken();
    // The options set when sharing this album
    $sharedOptions = $shareInfo->getSharedAlbumOptions();
} catch (\Google\ApiCore\ApiException $e) {
    // Handle error
}

Properti album bersama

Untuk album yang telah dibuat dan dibagikan oleh aplikasi Anda, semua respons yang tampilkan album menyertakan properti tambahan, shareInfo. Ini properti ditampilkan saat berbagi, listingan atau mengambil album.

Tabel berikut mencantumkan shareInfo properti:

Properti
sharedAlbumOptions Opsi yang menjelaskan apakah seseorang dapat tambahkan media item ke atau mengomentari album bersama.
shareableUrl

Link ke album Google Foto yang dibagikan. Siapa saja yang memiliki link dapat melihat konten album, sehingga harus ditangani dengan hati-hati.

Kolom shareableUrl hanya ditampilkan jika album memiliki berbagi tautan diaktifkan. Jika pengguna sudah bergabung ke album yang tidak dibagikan melalui link, mereka dapat menggunakan productUrl album untuk mengaksesnya sebagai gantinya.

shareableUrl menjadi tidak valid jika pemilik menonaktifkan link berbagi di aplikasi Google Foto, atau jika album tidak dibagikan lagi.

shareToken

Token yang digunakan untuk gabung, keluar, atau ambil detail album bersama atas nama pengguna yang bukan pemilik situs.

shareToken menjadi tidak valid jika pemilik menonaktifkan link berbagi di aplikasi Google Foto, atau jika album tidak dibagikan lagi.

isJoinable True jika album dapat digabungkan oleh pengguna.
isJoined True jika pengguna bergabung ke album. Ini selalu benar untuk pemilik album.
isOwned True jika pengguna memiliki album tersebut.

Membatalkan berbagi album

Untuk membatalkan berbagi album yang sebelumnya dibagikan aplikasi Anda, panggil albums.unshare menggunakan albumId album ini.

Selain album yang tidak lagi dibagikan, hal-hal berikut akan terjadi:

  • Semua orang yang bukan pemilik akan kehilangan akses ke album. Ini termasuk orang-orang yang memiliki punya albumnya dibagikan secara khusus dengan mereka melalui aplikasi Google Foto.
  • Semua konten yang ditambahkan oleh selain pemilik akan dihapus dari album.
  • Jika sebelumnya pengguna telah menambahkan konten album ke koleksinya, konten akan disimpan di koleksi mereka.
  • Token berbagi album dan URL yang dapat dibagikan akan menjadi tidak valid.

Contoh permintaan

REST

Berikut adalah header permintaan POST untuk membatalkan berbagi album:

POST https://photoslibrary.googleapis.com/v1/albums/album-id:unshare
Content-type: application/json
Authorization: Bearer oauth2-token

Isi permintaan harus kosong.

Jika permintaan berhasil, permintaan akan menampilkan respons kosong dengan permintaan HTTP kode status berhasil. Jika permintaan tidak berhasil, permintaan akan menampilkan HTTP kode status error dengan pesan error.

Java

try {
  // If this call is not successful, an exception is raised
  photosLibraryClient.unshareAlbum(albumId);
} catch (ApiException e) {
  // Handle error
}

PHP

try {
    // Mark the album as private and no longer shared
    // If this call is not successful, an exception is raised
    $photosLibraryClient->unshareAlbum($albumId);
} catch (\Google\ApiCore\ApiException $e) {
    // Handle error
}

Mengambil album bersama dan membagikan token

Detail album bersama, termasuk token berbaginya, akan ditampilkan saat aplikasi Anda membagikan album. Anda dapat juga mengambil detail tersebut setelahnya dengan cara berikut.

Jika pengguna yang saat ini terhubung ke aplikasi Anda adalah pemilik, atau bergabung ke album:

Jika pengguna yang saat ini tersambung ke aplikasi Anda tidak bergabung dengan album, Anda dapat mengambil detail album bersama dengan sharedAlbums.get menggunakan token berbagi yang valid.

Contoh permintaan

REST

Berikut permintaan untuk mendapatkan album dari shareToken-nya:

GET https://photoslibrary.googleapis.com/v1/sharedAlbums/share-token

Jika permintaan berhasil, permintaan akan mengembalikan album detail.

Java

try {
  // Get a shared album from its share token
  Album sharedAlbum = photosLibraryClient.getSharedAlbum(shareToken);

  String id = sharedAlbum.getId();
  String title = sharedAlbum.getTitle();
  // ...

} catch (ApiException e) {
  // Handle error
}

PHP

try {
    // Get the album from a share token
    $album = $photosLibraryClient->getSharedAlbum($shareToken);

    // Get some properties of an album
    $productUrl = $album->getProductUrl();
    $title = $album->getTitle();

} catch (\Google\ApiCore\ApiException $e) {
    // Handle error
}

Bergabung dengan album bersama

Aplikasi Anda dapat bergabung ke album bersama atas nama pengguna yang memiliki bagian album sebelumnya yang benar. Untuk melakukannya, kondisi berikut harus terpenuhi:

  • Aplikasi Anda memiliki membuat dan membagikan album.
  • Pengguna yang ingin Anda gabungkan ke album bukan pemiliknya. Yaitu, Kolom isOwned di bagian album shareInfo adalah salah.
  • Token berbagi valid.
  • Kolom isJoinable di shareInfo album adalah benar.

REST

Berikut adalah header permintaan POST untuk bergabung dengan album bersama:

POST https://photoslibrary.googleapis.com/v1/sharedAlbums:join
Content-type: application/json
Authorization: Bearer oauth2-token

Dalam isi permintaan, tentukan shareToken.

{
  "shareToken": "share-token"
}

Permintaan POST menampilkan album yang dibagikan aplikasi Anda bergabung atas nama pengguna.

Java

try {
  // Join the shared album using the share token obtained when sharing the album
  // If this call is not successful, an exception is raised
  JoinSharedAlbumResponse response = photosLibraryClient.joinSharedAlbum(shareToken);
  Album joinedAlbum = response.getAlbum();
} catch (ApiException e) {
  // Handle error
}

PHP

try {
    $response = $photosLibraryClient->joinSharedAlbum($shareToken);
    // Join the shared album using the share token obtained when sharing the album
    // If this call is not successful, an exception is raised
    $joinedAlbum = $response->getAlbum();
} catch (\Google\ApiCore\ApiException $e) {
    // Handle error
}

Keluar dari album bersama

Aplikasi Anda dapat keluar dari album bersama atas nama pengguna, menggunakan fitur berbagi album sebelumnya yang benar. Untuk melakukannya, kondisi berikut harus terpenuhi:

  • Aplikasi Anda telah membuat dan membagikan album.
  • Saat ini pengguna bergabung ke album. Artinya, kolom isJoined dalam shareInfo album adalah benar.
  • Pengguna yang terhubung ke aplikasi Anda bukan pemilik album. Yaitu, Kolom isOwned pada shareInfo album salah.

REST

Berikut adalah header permintaan POST untuk keluar dari album bersama:

POST https://photoslibrary.googleapis.com/v1/sharedAlbums:leave
Content-type: application/json
Authorization: Bearer oauth2-token

Dalam isi permintaan, tentukan shareToken.

{
  "shareToken": "share-token"
}

Jika permintaan berhasil, permintaan akan menampilkan respons kosong dengan permintaan HTTP kode status berhasil. Jika permintaan tidak berhasil, permintaan akan menampilkan HTTP kode status error dengan pesan error.

Java

try {
  // Leave a shared album using its share token
  // If this call is not successful, an exception is raised
  photosLibraryClient.leaveSharedAlbum(shareToken);
} catch (ApiException e) {
  // Handle error
}

PHP

try {
    // Leave the shared album using the share token obtained when sharing the album
    // If this call is not successful, an exception is raised
    $photosLibraryClient->leaveSharedAlbum($shareToken);
} catch (\Google\ApiCore\ApiException $e) {
    // Handle error
}

Properti item media bersama

Item media yang termasuk dalam album yang dibagikan oleh aplikasi Anda berisi properti tambahan, contributorInfo Properti ini hanya disertakan bila mencantumkan konten album bersama.

Properti contributorInfo berisi nama pengguna yang menambahkan media item ke album, dan URL dasar ke profil mereka gambar.

Berikut contohnya:

{
  "id: "media-item-id",
  ...,
  "mediaMetadata": {
    ...
  }
  "contributorInfo": {
    "profilePictureBaseUrl": "profile-picture-base-url_use-only-with-parameters",
    "displayName": "name-of-user"
  }
}