미디어 공유

앱에서 만든 앨범은 사용자 간에 공유될 수 있으며, 이러한 사용자가 앨범에 댓글을 달거나 자체 미디어 항목을 앨범에 제공하도록 허용하는 옵션이 있습니다.

Google 포토 라이브러리 API를 통해 앨범을 공유하려면 앱에서 다음을 실행해야 합니다.

  1. 사용자 대신 앨범을 만듭니다.
  2. 앨범을 공유됨으로 설정합니다.

필수 인증 범위

콘텐츠를 공유하려면 앱에서 photoslibrary.sharing 승인 범위를 요청해야 합니다.

앨범 공유

앨범을 공유하기 전에 다음 사항을 고려하세요.

  • 앱에서는 직접 만든 앨범만 공유할 수 있습니다. Google 포토를 비롯한 다른 앱에서 만든 앨범은 앱에서 공유할 수 없습니다.
  • 앱이 라이브러리 API를 통해 앨범을 공유하면 누구나 앨범에 액세스하는 데 사용할 수 있는 공유 가능한 URL이 생성됩니다.
  • API를 통해 공유된 앨범의 경우 앨범 소유자는 링크 공유를 사용 중지하거나 Google 포토 앱에서 앨범 공유를 취소할 수 있습니다. 이 경우 앱이 신규 사용자를 참여시키지 못할 수 있습니다.

앨범을 공유하려면 다음 단계를 따르세요.

  1. 공유 앨범을 만들려면 UX 가이드라인을 따르고 사용자의 명시적인 동의를 얻습니다.
  2. 앨범을 만들고 albumId를 기록합니다. 이미 앨범을 만들었다면 사용자의 앨범을 나열하여 albumId를 검색할 수 있습니다.
  3. 설정하려는 공유 옵션과 함께 관련 albumId를 사용하여 albums.share를 호출합니다.
  4. 응답에 shareToken 값을 기록합니다. 공유 토큰은 여러 사용자 계정에서 사용할 수 있는 공유 앨범의 식별자입니다.
  5. 이제 다른 사용자가 앱에 인증한 다음 shareToken를 사용하여 공유 앨범의 join, 탈퇴 또는 세부정보를 검색할 수 있습니다.

공유 옵션

앨범을 공유할 때 sharedAlbumOptions 매개변수를 사용하여 다음 옵션을 설정할 수 있습니다. 옵션을 명시적으로 설정하지 않으면 기본값이 사용됩니다.

속성 기본값 설명
isCollaborative false 다른 Google 포토 사용자가 공유 앨범에 콘텐츠를 추가할 수 있는지 여부를 설정합니다.
isCommentable false 다른 Google 포토 사용자가 공유 앨범에 댓글을 달 수 있는지 여부를 설정합니다.

예시 요청

다음 요청은 옵션과 함께 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
}

2,399필리핀

// 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가 포함됩니다. 이 속성은 앨범을 공유, 나열 또는 retrieving할 때 반환됩니다.

다음 표에는 shareInfo 속성이 나와 있습니다.

속성
sharedAlbumOptions 사용자가 공유 앨범에 미디어 항목을 추가하거나 댓글을 달 수 있는지 설명하는 옵션입니다.
shareableUrl

공유된 Google 포토 앨범 링크 링크가 있는 모든 사용자는 앨범 콘텐츠를 볼 수 있으므로 주의해서 다뤄야 합니다.

shareableUrl 필드는 앨범의 링크 공유가 사용 설정된 경우에만 반환됩니다. 사용자가 이미 링크 공유가 아닌 앨범에 참여한 경우 앨범의 productUrl를 사용해 앨범에 액세스할 수 있습니다.

소유자가 Google 포토 앱에서 링크 공유를 사용 중지하거나 앨범 공유가 취소되면 shareableUrl가 무효화됩니다.

shareToken

소유자가 아닌 사용자를 대신하여 공유 앨범의 join, 탈퇴 또는 세부정보 검색에 사용되는 토큰입니다.

소유자가 Google 포토 앱에서 링크 공유를 사용 중지하거나 앨범 공유가 취소되면 shareToken가 무효화됩니다.

isJoinable 사용자가 앨범에 참여할 수 있는 경우 True
isJoined 사용자가 앨범에 가입된 경우 True 이는 앨범 소유자의 경우 항상 사실입니다.
isOwned True, 사용자가 앨범을 소유한 경우

앨범 공유 취소

앱이 이전에 공유한 앨범의 공유를 취소하려면 앨범의 albumId를 사용하여 albums.unshare를 호출합니다.

앨범이 더 이상 공유되지 않는 것 외에도 다음과 같은 상황이 발생합니다.

  • 소유자가 아닌 모든 사용자는 앨범에 액세스할 수 없게 됩니다. 여기에는 Google 포토 앱을 통해 앨범을 특별히 공유한 사용자가 포함됩니다.
  • 소유자가 아닌 사용자가 추가한 모든 콘텐츠는 앨범에서 삭제됩니다.
  • 사용자가 이전에 앨범 콘텐츠를 라이브러리에 추가했다면 콘텐츠는 라이브러리에 보관됩니다.
  • 앨범의 공유 토큰과 공유 가능한 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
}

2,399필리핀

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
}

공유 앨범 및 공유 토큰 검색

앱이 앨범을 공유하면 공유 토큰을 포함한 공유 앨범의 세부정보가 반환됩니다. 나중에 다음과 같은 방법으로 이러한 세부정보를 검색할 수도 있습니다.

현재 앱에 연결된 사용자가 소유자이거나 앨범에 가입한 경우:

현재 앱에 연결된 사용자가 앨범에 조인되지 않은 경우 유효한 공유 토큰을 사용하여 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
}

2,399필리핀

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
}

공유 앨범에 참여

앱은 사용자 대신 앨범의 공유 토큰을 사용하여 공유 앨범에 참여할 수 있습니다. 이렇게 하려면 다음 조건을 충족해야 합니다.

  • 앱이 앨범을 만들고 공유했습니다.
  • 앨범에 참여하려는 사용자가 앨범의 소유자가 아닙니다. 즉, 앨범 shareInfo에 있는 isOwned 필드는 false입니다.
  • 공유 토큰이 유효합니다.
  • 앨범 shareInfoisJoinable 필드가 true입니다.

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
}

2,399필리핀

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
}

공유 앨범에서 나가기

앱은 사용자 대신 앨범의 공유 토큰을 사용하여 공유 앨범에서 나갈 수 있습니다. 이렇게 하려면 다음 조건을 충족해야 합니다.

  • 앱에서 앨범을 만들고 공유했습니다.
  • 사용자가 현재 앨범에 가입되어 있습니다. 즉, 앨범 shareInfo에 있는 isJoined 필드가 true입니다.
  • 앱에 연결된 사용자가 앨범의 소유자가 아닙니다. 즉, 앨범 shareInfo에 있는 isOwned 필드가 false입니다.

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
}

2,399필리핀

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