แชร์สื่อ

อัลบั้มที่แอปของคุณสร้างขึ้นสามารถแชร์กับผู้ใช้ต่างๆ ได้ โดยมีตัวเลือกให้อนุญาต ให้ผู้ใช้เหล่านั้นแสดงความคิดเห็น หรือร่วมแสดงรายการสื่อของตนเองในอัลบั้ม

หากต้องการแชร์อัลบั้มผ่าน API คลังภาพของ Google Photos แอปของคุณต้องดำเนินการต่อไปนี้

  1. สร้างอัลบั้มในนามของผู้ใช้
  2. ตั้งค่าอัลบั้มที่แชร์

ขอบเขตการตรวจสอบสิทธิ์ที่จำเป็น

แอปต้องขอ photoslibrary.sharing เพื่อแชร์เนื้อหา ขอบเขตการให้สิทธิ์

การแชร์อัลบั้ม

ก่อนที่จะแชร์อัลบั้ม ควรพิจารณาสิ่งต่อไปนี้

  • แอปของคุณจะแชร์ได้เฉพาะอัลบั้มที่สร้างไว้เท่านั้น อัลบั้มที่สร้างโดยแอปอื่นๆ, รวมถึง Google Photos ไม่สามารถแชร์ในแอปได้
  • เมื่อแอปแชร์อัลบั้มผ่าน Library API URL ที่แชร์ได้ สร้างขึ้นที่ทุกคนสามารถใช้เพื่อเข้าถึงอัลบั้ม
  • สำหรับอัลบั้มที่แชร์ผ่าน API เจ้าของอัลบั้มจะทำสิ่งต่อไปนี้ได้ ปิดการแชร์ลิงก์ หรือเลิกแชร์อัลบั้มในแอป Google Photos ซึ่งอาจทำให้คุณ ไม่ให้แอปเข้าร่วมกับผู้ใช้ใหม่

วิธีแชร์อัลบั้ม

  1. ทำตาม หลักเกณฑ์ UX และ ได้รับความยินยอมอย่างชัดแจ้งจากผู้ใช้เพื่อสร้างอัลบั้มที่แชร์
  2. สร้างอัลบั้ม และบันทึก albumId หากสร้างอัลบั้มไว้แล้ว คุณจะทำสิ่งต่อไปนี้ได้ เรียกดู albumId ภายในวันที่ แสดงอัลบั้มของผู้ใช้
  3. โทรหา albums.share โดยใช้ albumId ที่เกี่ยวข้อง รวมถึง ตัวเลือกการแบ่งปัน ที่คุณต้องการ ตั้งค่า
  4. บันทึก shareToken ในการตอบกลับ โทเค็นการแชร์คือตัวระบุสำหรับอัลบั้มที่แชร์ ที่ใช้ได้ในบัญชีผู้ใช้ต่างๆ
  5. ตอนนี้ผู้ใช้รายอื่นสามารถตรวจสอบสิทธิ์กับแอปของคุณได้แล้ว จากนั้น join ออก หรือ ดึงรายละเอียด ของอัลบั้มที่แชร์โดยใช้ shareToken

ตัวเลือกการแชร์

คุณสามารถตั้งค่าตัวเลือกต่อไปนี้เมื่อแชร์อัลบั้มโดยใช้ sharedAlbumOptions พารามิเตอร์ หากไม่ได้ตั้งค่าตัวเลือกไว้อย่างชัดแจ้ง ระบบจะใช้ค่าเริ่มต้น

พร็อพเพอร์ตี้ ค่าเริ่มต้น คำอธิบาย
isCollaborative false ตั้งค่าว่าผู้ใช้ Google Photos รายอื่นจะเพิ่มเนื้อหาลงใน อัลบั้มที่แชร์
isCommentable false ตั้งค่าว่าผู้ใช้ Google Photos สามารถแสดงความคิดเห็นใน อัลบั้มที่แชร์

ตัวอย่างคำขอ

คำขอต่อไปนี้แชร์อัลบั้มโดยโทรหา albums.share พร้อมตัวเลือก ต พร็อพเพอร์ตี้ shareInfo จะส่งคืนในคำตอบที่อธิบาย การแชร์พร็อพเพอร์ตี้

REST

ต่อไปนี้เป็นส่วนหัวของคำขอ POST เพื่อแชร์อัลบั้ม:

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

ในเนื้อหาคำขอ ให้ระบุตัวเลือกการแชร์

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

คำขอนี้ส่งคืนการตอบกลับต่อไปนี้:

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

พร็อพเพอร์ตี้อัลบั้มที่แชร์

สำหรับอัลบั้มที่แอปของคุณสร้างและแชร์ คำตอบทั้งหมดที่ ส่งคืน album ใส่พร็อพเพอร์ตี้เพิ่มเติม shareInfo ช่วงเวลานี้ จะแสดงผลเมื่อการแชร์ ข้อมูลหรือ กำลังดึงข้อมูลอัลบั้ม

ตารางต่อไปนี้แสดงรายการ shareInfo พร็อพเพอร์ตี้:

พร็อพเพอร์ตี้
sharedAlbumOptions ตัวเลือกที่ระบุว่าผู้ใช้สามารถ เพิ่มสื่อ รายการไปยังหรือแสดงความคิดเห็นในอัลบั้มที่แชร์
shareableUrl

ลิงก์ไปยังอัลบั้ม Google Photos ที่แชร์ ทุกคนที่มีลิงก์สามารถ ดูเนื้อหาของอัลบั้ม จึงควรตรวจสอบด้วยความระมัดระวัง

ฟิลด์ shareableUrl จะส่งคืนเมื่ออัลบั้ม มี การแชร์ลิงก์ เปิดอยู่ หากมีผู้ใช้เข้าร่วมอัลบั้มที่ ไม่ได้แชร์ลิงก์ แต่สามารถใช้ productUrl ของอัลบั้มเพื่อ เข้าถึงได้แทน

shareableUrl จะใช้ไม่ได้หากเจ้าของปิดลิงก์ แชร์ในแอป Google Photos หรือหากอัลบั้มไม่ได้แชร์

shareToken

โทเค็นที่ใช้เพื่อ join ออก หรือดึงข้อมูล รายละเอียดของอัลบั้มที่แชร์ในนามของผู้ใช้ที่ไม่ใช่ผู้ใช้

shareToken จะใช้ไม่ได้หากเจ้าของปิดลิงก์ แชร์ในแอป Google Photos หรือหากอัลบั้มไม่ได้แชร์

isJoinable True หากผู้ใช้สามารถเข้าร่วมอัลบั้มได้
isJoined True หากผู้ใช้เข้าร่วมอัลบั้ม ตลอดเวลา เป็นจริงแทนเจ้าของอัลบั้ม
isOwned True หากผู้ใช้เป็นเจ้าของอัลบั้ม

ยกเลิกการแชร์อัลบั้ม

หากต้องการเลิกแชร์อัลบั้มที่แอปแชร์ไว้ก่อนหน้านี้ ให้โทร albums.unshare โดยใช้ albumId ของอัลบั้ม

นอกจากจะไม่มีการแชร์อัลบั้มแล้ว รายการต่อไปนี้จะ เกิดขึ้น:

  • ผู้ที่ไม่ใช่เจ้าของทุกคนจะสูญเสียสิทธิ์เข้าถึงอัลบั้ม ซึ่งรวมถึงผู้ที่มี มีอัลบั้ม โดยเฉพาะ กับนักเรียนผ่านแอป Google Photos
  • เนื้อหาทั้งหมดที่ผู้ที่ไม่ใช่เจ้าของเพิ่มจะถูกนำออกจากอัลบั้ม
  • หากผู้ใช้เคยเพิ่มเนื้อหาจากอัลบั้มไว้ในคลังเพลงของตน เนื้อหาจะยังคงอยู่ในไลบรารี
  • โทเค็นการแชร์และ URL ที่แชร์ได้ของอัลบั้มจะใช้งานไม่ได้

ตัวอย่างคำขอ

REST

ต่อไปนี้เป็นส่วนหัวของคำขอ POST เพื่อเลิกแชร์อัลบั้ม

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

เนื้อหาของคำขอต้องว่างเปล่า

หากคำขอประสบความสำเร็จ ระบบจะส่งคืนการตอบกลับที่ว่างเปล่าพร้อม HTTP รหัสสถานะความสำเร็จ หากคำขอไม่ประสบความสำเร็จ คำขอจะแสดงผลเป็น HTTP รหัสสถานะข้อผิดพลาดพร้อมกับข้อความแสดงข้อผิดพลาด

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
}

การเรียกข้อมูลอัลบั้มที่แชร์และแชร์โทเค็น

รายละเอียดของอัลบั้มที่แชร์ รวมถึงโทเค็นการแชร์ จะแสดงผลเมื่อแอปของคุณแชร์อัลบั้ม คุณสามารถ เรียกรายละเอียดเหล่านั้นในภายหลังได้ด้วยวิธีต่อไปนี้

หากผู้ใช้ที่เชื่อมต่อกับแอปของคุณอยู่เป็นเจ้าของหรือเข้าร่วมกับ อัลบั้ม:

  • โดย albums.get จะใช้เมธอด albumIdที่เกี่ยวข้อง
  • ด้วย albums.list หากมี เป็นรายการสื่อในอัลบั้ม
  • ด้วย sharedAlbums.list ซึ่งจะแสดงอัลบั้มที่แชร์ทั้งหมดที่ผู้ใช้เข้าร่วมหรือเป็นเจ้าของ วิธีดึงข้อมูล เฉพาะอัลบั้มที่แอปของคุณสร้างขึ้น ให้ใช้ excludeNonAppCreatedData พารามิเตอร์
  • ด้วย sharedAlbums.get โดยใช้โทเค็นการแชร์

หากผู้ใช้ที่เชื่อมต่อกับแอปของคุณไม่ได้เข้าร่วมอัลบั้ม ให้ทำดังนี้ เรียกดูรายละเอียดของอัลบั้มที่แชร์ด้วย sharedAlbums.get โดยใช้ โทเค็นการแชร์ที่ถูกต้อง

ตัวอย่างคำขอ

REST

นี่เป็นคำขอรับอัลบั้มจาก shareToken:

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

หากคำขอประสบความสำเร็จ ระบบจะแสดง วันที่ album

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
}

การเข้าร่วมอัลบั้มที่แชร์

แอปของคุณสามารถเข้าร่วมอัลบั้มที่แชร์ในนามของผู้ใช้ที่มีการแชร์อัลบั้มได้ โทเค็น โดยต้องเป็นไปตามเงื่อนไขต่อไปนี้

  • แอปของคุณมี สร้างและแชร์
  • ผู้ใช้ที่คุณต้องการเข้าร่วมในอัลบั้มไม่ใช่เจ้าของอัลบั้ม กล่าวคือ ช่อง isOwned ในอัลบั้มของ shareInfo เป็นเท็จ
  • โทเค็นการแชร์ถูกต้อง
  • ช่อง isJoinable ใน shareInfo ของอัลบั้มเป็นความจริง

REST

ต่อไปนี้เป็นส่วนหัวของคำขอ POST เพื่อเข้าร่วมอัลบั้มที่แชร์

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

ในเนื้อหาคำขอ ให้ระบุ shareToken

{
  "shareToken": "share-token"
}

คำขอ POST จะแสดง album ที่แชร์ ที่แอปของคุณเข้าร่วมในนามของผู้ใช้

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
}

กำลังออกจากอัลบั้มที่แชร์

แอปของคุณสามารถออกจากอัลบั้มที่แชร์ในนามของผู้ใช้โดยใช้การแชร์ของอัลบั้มได้ โทเค็น โดยต้องเป็นไปตามเงื่อนไขต่อไปนี้

  • แอปของคุณสร้างและแชร์อัลบั้มแล้ว
  • ขณะนี้ผู้ใช้เข้าร่วมอัลบั้มแล้ว ซึ่งก็คือช่อง isJoined ใน shareInfo ของอัลบั้มเป็นความจริง
  • ผู้ใช้ที่เชื่อมต่อกับแอปของคุณไม่ใช่เจ้าของอัลบั้ม กล่าวคือ ฟิลด์ isOwned ใน shareInfo ของอัลบั้มมีค่าเป็นเท็จ

REST

ต่อไปนี้เป็นส่วนหัวของคำขอ POST เพื่อออกจากอัลบั้มที่แชร์

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

ในเนื้อหาคำขอ ให้ระบุ shareToken

{
  "shareToken": "share-token"
}

หากคำขอประสบความสำเร็จ ระบบจะส่งคืนการตอบกลับที่ว่างเปล่าพร้อม HTTP รหัสสถานะความสำเร็จ หากคำขอไม่ประสบความสำเร็จ คำขอจะแสดงผลเป็น HTTP รหัสสถานะข้อผิดพลาดพร้อมกับข้อความแสดงข้อผิดพลาด

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
}

พร็อพเพอร์ตี้ของรายการสื่อที่แชร์

รายการสื่อที่เป็นของ อัลบั้มที่แชร์โดยแอปของคุณจะมีพร็อพเพอร์ตี้เพิ่มเติม contributorInfo คุณสมบัตินี้จะรวมอยู่ในเมื่อแสดงข้อมูล เนื้อหาของอัลบั้มที่แชร์

พร็อพเพอร์ตี้ contributorInfo มีชื่อผู้ใช้ที่เพิ่มสื่อ รายการในอัลบั้มและ URL พื้นฐานไปยังโปรไฟล์ รูปภาพ

เช่น

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