Альбомы, созданные вашим приложением, могут использоваться совместно пользователями с параметрами, позволяющими этим пользователям комментировать или добавлять в альбом свои собственные мультимедийные элементы.
Чтобы поделиться альбомом через API библиотеки Google Фото, ваше приложение должно сделать следующее:
- Создать альбом от имени пользователя.
- Сделайте этот альбом общим .
Требуемая область проверки подлинности
Чтобы поделиться контентом, ваше приложение должно запросить область авторизации photoslibrary.sharing
.
Общий доступ к альбому
Прежде чем поделиться альбомом, примите во внимание следующие соображения:
- Ваше приложение может делиться только теми альбомами, которые оно создало. Альбомы, созданные другими приложениями, включая Google Фото, не могут использоваться вашим приложением совместно.
- Когда ваше приложение публикует альбом через API библиотеки, создается общий URL -адрес, который любой может использовать для доступа к альбому.
- Для альбомов, опубликованных через API, владелец альбома может отключить общий доступ по ссылке или отменить общий доступ к альбому в приложении Google Фото, что потенциально не позволит вашему приложению присоединять к нему новых пользователей.
Чтобы поделиться альбомом:
- Следуйте рекомендациям по UX и получите явное согласие пользователя на создание общего альбома.
- Создайте альбом и запишите его
albumId
. Если вы уже создали альбом, вы можете получить егоalbumId
, перечислив альбомы пользователя . - Вызовите
albums.share
, используя соответствующийalbumId
, а также параметры общего доступа, которые вы хотите установить. - Запишите значение
shareToken
в ответ. Токен общего доступа — это идентификатор общего альбома, который можно использовать в разных учетных записях пользователей. - Теперь другой пользователь может пройти аутентификацию в вашем приложении, а затем присоединиться к общему альбому, выйти из него или получить сведения об общем альбоме с помощью своего
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 Фото. Любой, у кого есть ссылка, может просматривать содержимое альбома, поэтому к нему следует относиться с осторожностью. Поле |
shareToken | Токен, который используется для присоединения к общему альбому, выхода из него или получения сведений об общем альбоме от имени пользователя, не являющегося его владельцем. |
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" } }