Compartir contenido multimedia

Los álbumes creados por tu app se pueden compartir entre los usuarios, y se ofrecen opciones para permitir para que esos usuarios comenten o contribuyan con sus propios elementos multimedia al álbum.

Para compartir un álbum mediante la API de la Biblioteca de Google Fotos, tu app debe hacer lo siguiente:

  1. Crea un álbum en nombre de un usuario.
  2. Configurar ese álbum como compartido

Permiso de autenticación requerido

Para compartir contenido, tu app debe solicitar el photoslibrary.sharing permiso de la autorización.

Cómo compartir un álbum

Antes de compartir un álbum, ten en cuenta estas consideraciones:

  • Tu app solo puede compartir álbumes que haya creado. Álbumes creados por otras aplicaciones, incluido Google Fotos, no se podrán compartir con tu app.
  • Cuando tu app comparte un álbum a través de la API de la Biblioteca, se genera una URL que se puede compartir que cualquier persona puede usar para acceder al álbum.
  • En el caso de los álbumes compartidos a través de la API, el propietario del álbum puede desactivar el uso compartido de vínculos o dejar de compartir el álbum en la app de Google Fotos, lo que podría impedir que que la app se una a él.

Para compartir un álbum, sigue estos pasos:

  1. Sigue el Lineamientos de UX y obtener el consentimiento explícito del usuario para crear un álbum compartido
  2. Crea el álbum, y registra su albumId. Si ya creaste el álbum, puedes recupera su albumId enumerar los álbumes del usuario
  3. Llamar a albums.share con el albumId relevante, junto con el opciones para compartir que deseas automático.
  4. Registra el shareToken en la respuesta. El token para compartir es un identificador de un álbum compartido que se pueden usar en diferentes cuentas de usuario.
  5. Otro usuario ahora puede autenticarse con tu app y, luego, unirse, abandonar o recupera los detalles del álbum compartido con su shareToken.

Opciones para compartir

Cuando compartes un álbum con el sharedAlbumOptions parámetro. Si las opciones no se establecen de forma explícita, se usan los valores predeterminados.

Propiedad Valor predeterminado Descripción
isCollaborative false Establece si otros usuarios de Google Fotos pueden agregar contenido al álbum compartido.
isCommentable false Establece si otros usuarios de Google Fotos pueden comentar el álbum compartido.

Ejemplo de solicitud

La siguiente solicitud comparte un álbum llamando a albums.share con opciones. R Propiedad shareInfo se devuelve en la respuesta que describe propiedades para compartir.

REST

Este es un encabezado de solicitud POST para compartir un álbum:

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

En el cuerpo de la solicitud, especifica las opciones para compartir.

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

Esta solicitud muestra la siguiente respuesta:

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

Propiedades de álbumes compartidos

En los álbumes que se crearon y compartieron con tu app, todas las respuestas que mostrar un album incluir una propiedad adicional, shareInfo Esta se muestra la propiedad cuando se ejecuta sharing, ficha o recuperando álbumes.

En la siguiente tabla, se indican shareInfo propiedades:

Propiedades
sharedAlbumOptions Opciones que describen si alguien puede agregar contenido multimedia elementos o comentarios en un álbum compartido.
shareableUrl

Un vínculo al álbum compartido de Google Fotos. Cualquier persona con el vínculo puede mira el contenido del álbum, así que debes tratarlo con cuidado.

El campo shareableUrl solo se devuelve si el álbum tiene uso compartido de vínculos activada. Si un usuario ya se unió a un álbum que si no se comparte mediante un vínculo, puede usar el productUrl del álbum para acceder a ella en su lugar.

Se invalida una shareableUrl si el propietario desactiva el vínculo compartir en la app de Google Fotos o si el álbum no se comparte.

shareToken

Un token que se usa para unirse, abandonar, o recuperar los detalles de un álbum compartido en nombre de un usuario que no sea el propietario.

Se invalida una shareToken si el propietario desactiva el vínculo compartir en la app de Google Fotos o si el álbum no se comparte.

isJoinable True si otros usuarios pueden unirse al álbum.
isJoined True si el usuario se unió al álbum. Esta es siempre true para el propietario del álbum.
isOwned True si el usuario es propietario del álbum.

Cómo dejar de compartir un álbum

Para dejar de compartir un álbum que tu app ya compartió, llama albums.unshare con el del álbum albumId.

Además de que el álbum ya no se comparta, lo siguiente suceder:

  • Todos quienes no sean propietarios perderán el acceso al álbum. Esto incluye a las personas que tienen tuvo el álbum se comparten específicamente con esa persona a través de la app de Google Fotos.
  • Todo el contenido que agreguen quienes no sean propietarios se eliminará del álbum.
  • Si un usuario ya agregó el contenido del álbum a su biblioteca, el el contenido se retendrá en su biblioteca.
  • Se invalidarán el token para compartir y la URL para compartir del álbum.

Ejemplo de solicitud

REST

A continuación, se incluye un encabezado de solicitud POST para dejar de compartir un álbum:

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

El cuerpo de la solicitud debe estar vacío.

Si la solicitud tuvo éxito, muestra una respuesta vacía con un código el código de estado de éxito. Si la solicitud no se realizó correctamente, muestra una solicitud código de estado de error con un mensaje de 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
}

Cómo recuperar álbumes compartidos y tokens para compartir

Los detalles de un álbum compartido incluido su token para compartir, se muestran cuando la app comparte un álbum. Puedes y, luego, recuperar esos detalles de las siguientes maneras.

Si el usuario actualmente conectado a tu aplicación es el propietario o está unido a la álbum:

Si el usuario actualmente conectado a tu app no se unió al álbum, puedes recuperar los detalles de un álbum compartido con sharedAlbums.get con un token para compartir válido.

Ejemplo de solicitud

REST

Esta es una solicitud para obtener un álbum a través de su shareToken:

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

Si la solicitud es exitosa, muestra el 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
}

Te estás uniendo a un álbum compartido

Tu app puede unirse a un álbum compartido en nombre de un usuario con el contenido compartido del álbum. token. Para ello, se deben cumplir las siguientes condiciones:

  • Tu app tiene crearon y compartieron los álbum.
  • El usuario al que quieres unirte al álbum no es su propietario. Es decir, Campo isOwned en la sección del álbum shareInfo es falso.
  • El token para compartir es válido.
  • El campo isJoinable del archivo shareInfo del álbum es verdadero.

REST

Este es un encabezado de solicitud POST para unirte a un álbum compartido:

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

En el cuerpo de la solicitud, especifica el shareToken.

{
  "shareToken": "share-token"
}

La solicitud POST muestra el album compartido se unió la app en nombre del usuario.

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
}

Cómo salir de un álbum compartido

Tu app puede salir de un álbum compartido en nombre de un usuario con la opción para compartir del álbum. token. Para ello, se deben cumplir las siguientes condiciones:

  • Tu app creó y compartió el álbum.
  • Actualmente, el usuario está unido al álbum. Es decir, el campo isJoined del shareInfo del álbum es verdadera.
  • El usuario conectado a tu app no es el propietario del álbum. Es decir, El campo isOwned del shareInfo del álbum es falso.

REST

A continuación, se incluye un encabezado de solicitud POST para salir de un álbum compartido:

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

En el cuerpo de la solicitud, especifica el shareToken.

{
  "shareToken": "share-token"
}

Si la solicitud tuvo éxito, muestra una respuesta vacía con un código el código de estado de éxito. Si la solicitud no se realizó correctamente, muestra una solicitud código de estado de error con un mensaje de 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
}

Propiedades de elementos multimedia compartidos

Los elementos multimedia que pertenecen a Los álbumes compartidos por tu app contienen una propiedad adicional, contributorInfo Esta propiedad solo se incluye cuando se enumera el contenidos de un álbum compartido.

La propiedad contributorInfo incluye el nombre del usuario que agregó el contenido multimedia elemento al álbum y un URL base a su perfil imagen.

Por ejemplo:

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