Поделиться медиа

Альбомы, созданные вашим приложением, могут использоваться совместно пользователями с параметрами, позволяющими этим пользователям комментировать или добавлять в альбом свои собственные мультимедийные элементы.

Чтобы поделиться альбомом через API библиотеки Google Фото, ваше приложение должно сделать следующее:

  1. Создать альбом от имени пользователя.
  2. Сделайте этот альбом общим .

Требуемая область проверки подлинности

Чтобы поделиться контентом, ваше приложение должно запросить область авторизации photoslibrary.sharing .

Общий доступ к альбому

Прежде чем поделиться альбомом, примите во внимание следующие соображения:

  • Ваше приложение может делиться только теми альбомами, которые оно создало. Альбомы, созданные другими приложениями, включая Google Фото, не могут использоваться вашим приложением совместно.
  • Когда ваше приложение публикует альбом через API библиотеки, создается общий URL -адрес, который любой может использовать для доступа к альбому.
  • Для альбомов, опубликованных через API, владелец альбома может отключить общий доступ по ссылке или отменить общий доступ к альбому в приложении Google Фото, что потенциально не позволит вашему приложению присоединять к нему новых пользователей.

Чтобы поделиться альбомом:

  1. Следуйте рекомендациям по UX и получите явное согласие пользователя на создание общего альбома.
  2. Создайте альбом и запишите его albumId . Если вы уже создали альбом, вы можете получить его albumId , перечислив альбомы пользователя .
  3. Вызовите albums.share , используя соответствующий albumId , а также параметры общего доступа, которые вы хотите установить.
  4. Запишите значение shareToken в ответ. Токен общего доступа — это идентификатор общего альбома, который можно использовать в разных учетных записях пользователей.
  5. Теперь другой пользователь может пройти аутентификацию в вашем приложении, а затем присоединиться к общему альбому, выйти из него или получить сведения об общем альбоме с помощью своего shareToken .

Поделиться вариантами

При совместном использовании альбома с помощью параметра sharedAlbumOptions можно установить следующие параметры. Если параметры не заданы явно, используются значения по умолчанию.

Имущество Значение по умолчанию Описание
isCollaborative false Определяет, могут ли другие пользователи Google Фото добавлять контент в общий альбом.
isCommentable false Определяет, могут ли другие пользователи Google Фото комментировать общий альбом.

Пример запроса

Следующий запрос предоставляет общий доступ к альбому, вызывая albums.share с параметрами. В ответе возвращается свойство shareInfo , описывающее свойства общего доступа к альбому.

ОТДЫХАТЬ

Вот заголовок 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"
  }
}

Ява

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 Фото. Любой, у кого есть ссылка, может просматривать содержимое альбома, поэтому к нему следует относиться с осторожностью.

Поле shareableUrl возвращается только в том случае, если для альбома включен общий доступ по ссылке . Если пользователь уже присоединился к альбому, для которого нет общей ссылки, он может вместо этого использовать productUrl альбома для доступа к нему.

shareableUrl становится недействительным, если владелец отключает общий доступ по ссылке в приложении Google Фото или если доступ к альбому закрыт.

shareToken

Токен, который используется для присоединения к общему альбому, выхода из него или получения сведений об общем альбоме от имени пользователя, не являющегося его владельцем.

shareToken становится недействительным, если владелец отключает общий доступ по ссылке в приложении Google Фото или если доступ к альбому закрыт.

isJoinable True , если к альбому могут присоединиться пользователи.
isJoined True , если пользователь присоединился к альбому. Это всегда верно для владельца альбома.
isOwned True , если пользователь владеет альбомом.

Удаление альбома

Чтобы отменить общий доступ к альбому, которым ранее поделилось ваше приложение, вызовите albums.unshare , используя альбом albumId .

В дополнение к тому, что альбомом больше не будут делиться, произойдут следующие вещи:

  • Все невладельцы потеряют доступ к альбому. Сюда входят люди, которым был предоставлен доступ к альбому через приложение Google Фото.
  • Весь контент, добавленный пользователями, не являющимися владельцами, будет удален из альбома.
  • Если пользователь ранее добавил содержимое альбома в свою библиотеку, содержимое будет сохранено в его библиотеке.
  • Токен общего доступа к альбому и общий URL-адрес будут аннулированы.

Пример запроса

ОТДЫХАТЬ

Вот заголовок POST-запроса для удаления альбома:

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

Тело запроса должно быть пустым.

Если запрос был успешным, он возвращает пустой ответ с кодом состояния успеха HTTP. Если запрос не был успешным, он возвращает код состояния ошибки HTTP с сообщением об ошибке.

Ява

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 , используя действительный токен общего доступа.

Пример запроса

ОТДЫХАТЬ

Вот запрос на получение альбома по его shareToken :

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

Если запрос выполнен успешно, он возвращает сведения об общем album .

Ява

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 альбома имеет значение false.
  • Токен общего доступа действителен.
  • Поле isJoinable в shareInfo альбома имеет значение true.

ОТДЫХАТЬ

Вот заголовок запроса POST для присоединения к общему альбому:

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

В теле запроса укажите shareToken .

{
  "shareToken": "share-token"
}

Запрос POST возвращает общий album , к которому ваше приложение присоединилось от имени пользователя.

Ява

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 альбома имеет значение true.
  • Пользователь, подключенный к вашему приложению, не является владельцем альбома. То есть поле isOwned в shareInfo альбома имеет значение false.

ОТДЫХАТЬ

Вот заголовок запроса POST для выхода из общего альбома:

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

В теле запроса укажите shareToken .

{
  "shareToken": "share-token"
}

Если запрос был успешным, он возвращает пустой ответ с кодом состояния успеха HTTP. Если запрос не был успешным, он возвращает код состояния ошибки HTTP с сообщением об ошибке.

Ява

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