Medyayı paylaşın

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:

  1. Kullanıcı adına bir albüm oluşturun.
  2. 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:

  1. 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.
  2. Albümü oluşturun ve albumId albümünü kaydedin. Albümü zaten oluşturduysanız kullanıcının albümlerini listeleyerek albumId bilgisini alabilirsiniz.
  3. İlgili albumId ve ayarlamak istediğiniz paylaşım seçeneklerini kullanarak albums.share numaralı telefonu arayın.
  4. 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.
  5. 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.

shareableUrl alanı yalnızca albümde bağlantı paylaşımı açıksa döndürülür. Bağlantıyla paylaşılmayan bir albüme zaten katılmış olan kullanıcılar, albüme erişmek için productUrl seçeneğini kullanabilir.

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 shareableUrl geçersiz hale gelir.

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 shareToken geçersiz hale gelir.

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:

Ş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 etiketindeki isOwned alanı yanlıştır.
  • Paylaşım jetonu geçerli.
  • Albümün shareInfo alanındaki isJoinable 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çindeki isJoined alanı doğru.
  • Uygulamanıza bağlı kullanıcı albümün sahibi değil. Yani albümün shareInfo alanındaki isOwned 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"
  }
}