Uygulamanız tarafından oluşturulan albümler kullanıcılar arasında paylaşılabilir. Bu seçenekler, kullanıcıların yorum yapmasına veya kendi medya öğelerini albüme katkıda bulunmasına olanak tanır.
Google Photos Library API'yi kullanarak albüm paylaşmak için uygulamanızın şunları yapması gerekir:
- Kullanıcı adına bir albüm oluşturun.
- Söz konusu albümü paylaşılan olarak ayarlayın.
Zorunlu kimlik doğrulama kapsamı
Uygulamanızın içerik paylaşmak için photoslibrary.sharing
yetkilendirme kapsamını istemesi gerekir.
Albüm paylaşma
Bir albümü paylaşmadan önce, aşağıdaki noktaları dikkate alın:
- Uygulamanız yalnızca oluşturduğu albümleri paylaşabilir. Google Fotoğraflar da dahil olmak üzere diğer uygulamalar tarafından oluşturulan albümler uygulamanız tarafından paylaşılamaz.
- Uygulamanız Library API'yi kullanarak bir albüm paylaştığında, herkesin albüme erişmek için kullanabileceği bir paylaşılabilir URL oluşturulur.
- API üzerinden paylaşılan albümlerde albüm sahibi, Google Fotoğraflar uygulamasında bağlantı paylaşımını devre dışı bırakabilir veya albümün paylaşımını geri alabilir. Bu da uygulamanızın yeni kullanıcılara katılmasını engelleyebilir.
Bir albümü paylaşmak için:
- Kullanıcı deneyimi yönergelerini uygulayın ve paylaşılan bir albüm oluşturmak için kullanıcıdan açık izin alın.
- Albümü oluşturun ve
albumId
albümünü kaydedin. Albümü zaten oluşturduysanız kullanıcının albümlerini listeleyerekalbumId
bilgisini alabilirsiniz. - İlgili
albumId
ve ayarlamak istediğiniz paylaşım seçeneklerini kullanarakalbums.share
numaralı telefonu arayın. - Yanıttaki
shareToken
değerini kaydedin. Paylaşım jetonu, farklı kullanıcı hesaplarında kullanılabilen bir paylaşılan albüm tanımlayıcısıdır. - Başka bir kullanıcı artık uygulamanızla kimlik doğrulaması yapabilir, ardından
shareToken
öğesini kullanarak paylaşılan albümün join, ayrıl veya ayrıntılarını alabilir.
Paylaşım seçenekleri
Bir albümü sharedAlbumOptions
kullanarak paylaşırken aşağıdaki seçenekler ayarlanabilir. Seçenekler açıkça ayarlanmazsa varsayılan değerler kullanılır.
Özellik | Varsayılan değer | Açıklama |
---|---|---|
isCollaborative |
false |
Diğer Google Fotoğraflar kullanıcılarının paylaşılan albüme içerik ekleyip ekleyemeyeceğini belirler. |
isCommentable |
false |
Diğer Google Fotoğraflar kullanıcılarının paylaşılan albümde yorum yapıp yapamayacağını belirler. |
Örnek istek
Aşağıdaki istek, albums.share
adlı kişiyi seçeneklerle çağırarak bir albüm paylaşıyor. Albümün paylaşım özelliklerini açıklayan yanıtta shareInfo
özelliği döndürülür.
REST
Bir albümü paylaşmak için POST isteği başlığını burada bulabilirsiniz:
POST https://photoslibrary.googleapis.com/v1/albums/album-id:share Content-type: application/json Authorization: Bearer oauth2-token
İsteğin gövdesinde, paylaşım seçeneklerini belirtin.
{ "sharedAlbumOptions": { "isCollaborative": "true", "isCommentable": "true" } }
Bu istek aşağıdaki yanıtı döndürür:
{ "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 }
Paylaşılan albüm özellikleri
Uygulamanız tarafından oluşturulan ve paylaşılan albümler için album
döndüren tüm yanıtlar shareInfo
adlı ek bir özellik içerir. Bu mülk, albümleri paylaşırken, listelerken veya retrieving döndürülür.
Aşağıdaki tabloda shareInfo
özellikleri listelenmektedir:
Özellikler | |
---|---|
sharedAlbumOptions |
Bir kullanıcının paylaşılan bir albüme medya öğeleri ekleyip ekleyemeyeceğini veya paylaşılan bir albüme yorum yapıp yapamayacağını belirten seçenekler. |
shareableUrl |
Paylaşılan Google Fotoğraflar albümünün bağlantısı. Bağlantıya sahip olan herkes albüm içeriğini görüntüleyebilir. Bu nedenle albümdeki içerikler dikkatli bir şekilde ele alınmalıdır.
Grup sahibi, Google Fotoğraflar uygulamasında bağlantı paylaşımını devre dışı bırakırsa veya albümün paylaşımı kaldırılırsa |
shareToken |
Paylaşılan bir albümün sahibi olmayan bir kullanıcı adına join, ayrılmak veya ayrıntıları almak için kullanılan bir jeton. Grup sahibi, Google Fotoğraflar uygulamasında bağlantı paylaşımını devre dışı bırakırsa veya albümün paylaşımı kaldırılırsa |
isJoinable |
Kullanıcılar albüme katılabiliyorsa True . |
isJoined |
Kullanıcı albüme katılmışsa True . Bu durum albümün sahibi için her zaman geçerlidir. |
isOwned |
Albümün sahibi kullanıcıysa True . |
Albümün paylaşımını geri alma
Uygulamanızın daha önce paylaştığı bir albümün paylaşımını geri almak için albümün albumId
numarasını kullanarak albums.unshare
numarasını arayın.
Albümün artık paylaşılmamasının yanı sıra aşağıdaki değişiklikler de yapılacak:
- Sahibi olmayan tüm kullanıcılar albüme erişimi kaybedecek. Buna, Google Fotoğraflar uygulaması üzerinden albümü özel olarak paylaşmış olan kullanıcılar da dahildir.
- Sahibi olmayanların eklediği tüm içerikler albümden kaldırılacak.
- Kullanıcı, albümün içeriğini daha önce kitaplığına eklediyse içerik kullanıcının kitaplığında saklanır.
- Albümün paylaşım jetonu ve paylaşılabilir URL'si geçersiz kılınacak.
Örnek istek
REST
Bir albümün paylaşımını geri almak için POST isteği başlığını burada bulabilirsiniz:
POST https://photoslibrary.googleapis.com/v1/albums/album-id:unshare Content-type: application/json Authorization: Bearer oauth2-token
İstek metni boş olmalıdır.
İstek başarılı olduysa HTTP başarı durum kodunu içeren boş bir yanıt döndürür. İstek başarılı değilse hata mesajıyla birlikte bir HTTP hata durum kodu döndürür.
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 }
Paylaşılan albümleri ve paylaşım jetonlarını alma
Uygulamanız bir albüm paylaştığında, paylaşım jetonu da dahil olmak üzere paylaşılan albümün ayrıntıları döndürülür. Bu bilgileri daha sonra aşağıdaki yollarla da alabilirsiniz.
Uygulamanıza bağlı olan kullanıcı albümün sahibiyse veya albüme katılmışsa:
albums.get
için ilgilialbumId
kullanıldığında.- Albümde medya öğeleri varsa
albums.list
ile. - Kullanıcının katıldığı veya sahip olduğu tüm paylaşılan albümleri döndüren
sharedAlbums.list
ile. Yalnızca uygulamanızın oluşturduğu albümleri almak içinexcludeNonAppCreatedData
parametresini kullanın. sharedAlbums.get
ile paylaşım jetonu kullanılır.
Şu anda uygulamanıza bağlı olan kullanıcı albüme katılmamışsa sharedAlbums.get
ile paylaşılan albümün ayrıntılarını geçerli bir paylaşım jetonu kullanarak alabilirsiniz.
Örnek istek
REST
shareToken
albümüne erişmek için istekte bulundu:
GET https://photoslibrary.googleapis.com/v1/sharedAlbums/share-token
İstek başarılı olursa paylaşılan
album
ayrıntılarını döndürür.
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 }
Paylaşılan bir albüme katılma
Uygulamanız, albümün paylaşım jetonuyla bir kullanıcı adına paylaşılan albüme katılabilir. Bunun için aşağıdaki koşulların sağlanması gerekir:
- Uygulamanız albümü oluşturup paylaştı.
- Albüme katılmak istediğiniz kullanıcı, albümün sahibi değil. Yani albümün
shareInfo
etiketindekiisOwned
alanı yanlıştır. - Paylaşım jetonu geçerli.
- Albümün
shareInfo
alanındakiisJoinable
alanı doğru.
REST
Paylaşılan bir albüme katılmak için POST isteği üstbilgisini burada görebilirsiniz:
POST https://photoslibrary.googleapis.com/v1/sharedAlbums:join Content-type: application/json Authorization: Bearer oauth2-token
İsteğin gövdesinde, shareToken
özelliğini belirtin.
{ "shareToken": "share-token" }
POST isteği, kullanıcı adına uygulamanızın katıldığı paylaşılan album
değerini döndürür.
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 }
Paylaşılan bir albümden ayrılma
Uygulamanız, albümün paylaşım jetonunu kullanarak bir kullanıcı adına paylaşılan albümden ayrılabilir. Bunun için aşağıdaki koşulların sağlanması gerekir:
- Uygulamanız albümü oluşturdu ve paylaştı.
- Kullanıcı şu anda albüme katılmış. Yani, albümün
shareInfo
içindekiisJoined
alanı doğru. - Uygulamanıza bağlı kullanıcı albümün sahibi değil. Yani albümün
shareInfo
alanındakiisOwned
alanı yanlıştır.
REST
Paylaşılan bir albümden ayrılmak için POST isteği başlığını burada görebilirsiniz:
POST https://photoslibrary.googleapis.com/v1/sharedAlbums:leave Content-type: application/json Authorization: Bearer oauth2-token
İsteğin gövdesinde, shareToken
özelliğini belirtin.
{ "shareToken": "share-token" }
İstek başarılı olduysa HTTP başarı durum kodunu içeren boş bir yanıt döndürür. İstek başarılı değilse hata mesajıyla birlikte bir HTTP hata durum kodu döndürür.
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 }
Paylaşılan medya öğesi özellikleri
Uygulamanızın paylaştığı albümlere ait medya öğeleri ek bir özellik (contributorInfo
) içerir.
Bu özellik yalnızca paylaşılan bir albümün içerikleri listelenirken dahil edilir.
contributorInfo
özelliği, medya öğesini albüme ekleyen kullanıcının adını ve profil resmine bir temel URL içerir.
Aşağıda bir örnek verilmiştir:
{ "id: "media-item-id", ..., "mediaMetadata": { ... } "contributorInfo": { "profilePictureBaseUrl": "profile-picture-base-url_use-only-with-parameters", "displayName": "name-of-user" } }