앱에서 만든 앨범은 사용자 간에 공유될 수 있으며, 이러한 사용자가 앨범에 댓글을 달거나 자체 미디어 항목을 앨범에 제공하도록 허용하는 옵션이 있습니다.
Google 포토 라이브러리 API를 통해 앨범을 공유하려면 앱에서 다음을 실행해야 합니다.
- 사용자 대신 앨범을 만듭니다.
- 앨범을 공유됨으로 설정합니다.
필수 인증 범위
콘텐츠를 공유하려면 앱에서 photoslibrary.sharing
승인 범위를 요청해야 합니다.
앨범 공유
앨범을 공유하기 전에 다음 사항을 고려하세요.
- 앱에서는 직접 만든 앨범만 공유할 수 있습니다. Google 포토를 비롯한 다른 앱에서 만든 앨범은 앱에서 공유할 수 없습니다.
- 앱이 라이브러리 API를 통해 앨범을 공유하면 누구나 앨범에 액세스하는 데 사용할 수 있는 공유 가능한 URL이 생성됩니다.
- API를 통해 공유된 앨범의 경우 앨범 소유자는 링크 공유를 사용 중지하거나 Google 포토 앱에서 앨범 공유를 취소할 수 있습니다. 이 경우 앱이 신규 사용자를 참여시키지 못할 수 있습니다.
앨범을 공유하려면 다음 단계를 따르세요.
- 공유 앨범을 만들려면 UX 가이드라인을 따르고 사용자의 명시적인 동의를 얻습니다.
- 앨범을 만들고
albumId
를 기록합니다. 이미 앨범을 만들었다면 사용자의 앨범을 나열하여albumId
를 검색할 수 있습니다. - 설정하려는 공유 옵션과 함께 관련
albumId
를 사용하여albums.share
를 호출합니다. - 응답에
shareToken
값을 기록합니다. 공유 토큰은 여러 사용자 계정에서 사용할 수 있는 공유 앨범의 식별자입니다. - 이제 다른 사용자가 앱에 인증한 다음
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 포토 앨범 링크 링크가 있는 모든 사용자는 앨범 콘텐츠를 볼 수 있으므로 주의해서 다뤄야 합니다.
소유자가 Google 포토 앱에서 링크 공유를 사용 중지하거나 앨범 공유가 취소되면 |
shareToken |
소유자가 아닌 사용자를 대신하여 공유 앨범의 join, 탈퇴 또는 세부정보 검색에 사용되는 토큰입니다. 소유자가 Google 포토 앱에서 링크 공유를 사용 중지하거나 앨범 공유가 취소되면 |
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 }
공유 앨범 및 공유 토큰 검색
앱이 앨범을 공유하면 공유 토큰을 포함한 공유 앨범의 세부정보가 반환됩니다. 나중에 다음과 같은 방법으로 이러한 세부정보를 검색할 수도 있습니다.
현재 앱에 연결된 사용자가 소유자이거나 앨범에 가입한 경우:
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 }
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입니다. - 공유 토큰이 유효합니다.
- 앨범
shareInfo
의isJoinable
필드가 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" } }