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:
- Crea un álbum en nombre de un usuario.
- 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:
- Sigue el Lineamientos de UX y obtener el consentimiento explícito del usuario para crear un álbum compartido
- Crea el álbum,
y registra su
albumId
. Si ya creaste el álbum, puedes recupera sualbumId
enumerar los álbumes del usuario - Llamar a
albums.share
con elalbumId
relevante, junto con el opciones para compartir que deseas automático. - 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. - 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 Se invalida una |
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 |
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
albums.get
usaalbumId
relevante. - Con
albums.list
, si hay son elementos multimedia del álbum. - Con
sharedAlbums.list
: que devuelve todos los álbumes compartidos a los que el usuario se unió o que posee. Para recuperar solo los álbumes que haya creado tu aplicación, usa elexcludeNonAppCreatedData
parámetro. - Con
sharedAlbums.get
con un token para compartir.
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 álbumshareInfo
es falso. - El token para compartir es válido.
- El campo
isJoinable
del archivoshareInfo
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
delshareInfo
del álbum es verdadera. - El usuario conectado a tu app no es el propietario del álbum. Es decir,
El campo
isOwned
delshareInfo
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" } }