Gerekli yetkilendirme kapsamları
Google Photos Library API, medya öğelerine ve albümlere erişmek için kullanılan birden fazla kapsam içerir. Çeşitli çağrılardan döndürülen medya öğeleri, hangi kapsamlara bağlı olarak farklılık gösterir? için istekte bulunuldu.
photoslibrary.readonly
kapsamı, şuradaki tüm medya öğelerine erişim izni verir:
kullanıcının kitaplığı. photoslibrary.readonly.appcreateddata
kapsamı erişime izin verir
yalnızca uygulama tarafından oluşturulan medya öğeleriyle uyumludur. Daha fazla bilgi için bkz.
Yetkilendirme kapsamları.
Genel Bakış
API'nin önemli bir kullanımı, kullanıcının yedeklediği medya öğelerini listelemektir. Google Fotoğraflar'a gönderebilirsiniz. Belirli bir albümdeki veya kullanıcının tamamındaki öğeler kitaplığını (Google Fotoğraflar uygulamasındaki varsayılan görünüm) listeleyebilirsiniz.
Fotoğrafları seçmek için filtreleri kullanabilirsiniz içerik kategorisi veya ortam türüyle eşleşen kullanıcının kitaplığından kaldırın. Bu özellik, tıklayın.
Kitaplığın ve albüm içeriğinin listelenmesi, bir medya öğeleri listesi döndürür.
Bir albümün parçası olan zenginleştirmeler
dahil edilmez. Medya öğeleri bir fotoğrafı, videoyu veya diğer medyaları açıklar. CEVAP
mediaItem
, öğenin doğrudan bağlantısını ve
Google Fotoğraflar ve diğer ilgili meta veriler. Daha fazla bilgi için bkz.
Medya öğelerine erişin ve
mediaItems
.
Albümleri listeleme
Kullanıcının albümlerinin listesini şu komutla alabilirsiniz: albums.list.
REST
Örnek bir istek:
GET https://photoslibrary.googleapis.com/v1/albums
İstek aşağıdaki sonucu döndürür:
{ "albums": [ { "id": "album-id", "title": "album-title", "productUrl": "album-product-url", "coverPhotoBaseUrl": "album-cover-base-url_do-not-use-directly", "coverPhotoMediaItemId": "album-cover-media-item-id", "isWriteable": "whether-you-can-write-to-this-album", "mediaItemsCount": "number-of-media-items-in-album" }, ... ], "nextPageToken": "token-for-pagination" }
Java
try { // Make a request to list all albums in the user's library // Iterate over all the albums in this list // Pagination is handled automatically ListAlbumsPagedResponse response = photosLibraryClient.listAlbums(); for (Album album : response.iterateAll()) { // Get some properties of an album String id = album.getId(); String title = album.getTitle(); String productUrl = album.getProductUrl(); String coverPhotoBaseUrl = album.getCoverPhotoBaseUrl(); // The cover photo media item id field may be empty String coverPhotoMediaItemId = album.getCoverPhotoMediaItemId(); boolean isWritable = album.getIsWriteable(); long mediaItemsCount = album.getMediaItemsCount(); } } catch (ApiException e) { // Handle error }
PHP
try { // Make a request to list all albums in the user's library // Iterate over all the albums in this list // Pagination is handled automatically $response = $photosLibraryClient->listAlbums(); foreach ($response->iterateAllElements() as $album) { // Get some properties of an album $albumId = $album->getId(); $title = $album->getTitle(); $productUrl = $album->getProductUrl(); $coverPhotoBaseUrl = $album->getCoverPhotoBaseUrl(); // The cover photo media item id field may be empty $coverPhotoMediaItemId = $album->getCoverPhotoMediaItemId(); $isWriteable = $album->getIsWriteable(); $totalMediaItems = $album->getTotalMediaItems(); } } catch (\Google\ApiCore\ApiException $e) { // Handle error }
Döndürülen her albüm, şuradaki içeriği almak için kullanılabilecek bir kimliğe sahiptir: Albüm içeriği listeleme bölümünde gösterildiği gibi. Aynı zamanda başlığı ve içerdiği medya öğelerinin sayısını gösterir.
productUrl
, Google Fotoğraflar'daki şu olabilecek albümü işaret eder:
kullanıcı tarafından açıldı.
coverPhotoMediaItemId
, medya öğesini içerir
Kimliği
bu albümün kapak fotoğrafını temsil eder. Bu kapak resmine erişmek için şunu kullanın:
coverPhotoBaseUrl
coverPhotoBaseUrl
özelliğini
belirtmek için ek
parametrelerini kullanın.
Kullanıcının hesabında oluşturulan veya kullanıcının albümüne eklenen albümler
hesabınızın ve uygulamanızın paylaştığı mülklere ait veriler, ek bir shareInfo
mülkü içerir.
Daha fazla bilgi için Medya paylaşma konusuna bakın.
Albümlerde, medya oluşturup oluşturamayacağınızı belirten bir isWriteable
işareti de bulunabilir
öğe var. Bu işaret döndürülmezse varsayılan olarak false
olur. Evet
uygulamanıza verilen erişime bağlıdır. Buna şunlar da dahildir:
- Albümü kimin oluşturduğu.
- Paylaşılıp paylaşılmaması.
- Kullanıcının kapsamı onayladı.
Bu ölçütlerden herhangi biri değişirse bu işaret değişebilir. Daha fazla bilgi için bkz.
Albüm oluşturun. İlgili içeriği oluşturmak için kullanılan
yanıt da bir nextPageToken
içeriyor. Daha fazla bilgi için bkz.
Sayfaları numaralandırma.
Boş albümlerin yanıtı şuna göre değişir: mediaItemsCount
ve
coverPhotoMediaItemId
varsayılan olarak 0 değerine ayarlanır ve REST'ten çıkarılır.
tıklayın. Ayrıca coverPhotoBaseUrl
değerinin varsayılan bir yer tutucuya işaret ettiğini unutmayın
görüntüsüdür.
Kitaplık içeriklerini listeleme
Kullanıcının Google Fotoğraflar kitaplığındaki tüm medya öğelerini listeleyebilirsiniz. Arşivlenen ve silinen öğeler dahil değildir. Medya öğelerini içerik, tarih ve diğer özellikleri uygulayarak filtreleri hakkında daha fazla bilgi edinin. Kullanıcı bir Google Fotoğraflar'daki Paylaşım sekmesinde bulunan öğeyi söz konusu öğe bu listede yer almaz.
Bir medya öğesini almak için şu numarayı arayın: mediaItems.list.
REST
Örnek bir istek:
GET https://photoslibrary.googleapis.com/v1/mediaItems
Content-type: application/json
Authorization: Bearer oauth2-token
{
"pageSize": "100",
}
GET isteği aşağıdaki yanıtı döndürür:
{ "mediaItems": [ ... ], "nextPageToken": "token-for-pagination" }
Java
try { // Make a request to list all media items in the user's library // Iterate over all the retrieved media items // Pagination is handled automatically ListMediaItemsPagedResponse response = photosLibraryClient.listMediaItems(); for (MediaItem item : response.iterateAll()) { // Get some properties of a media item String id = item.getId(); String description = item.getDescription(); String mimeType = item.getMimeType(); String productUrl = item.getProductUrl(); String filename = item.getFilename(); } } catch (ApiException e) { // Handle error }
PHP
try { // Make a request to list all media items in the user's library // Iterate over all the retrieved media items // Pagination is handled automatically $response = $photosLibraryClient->listMediaItems(); foreach ($response->iterateAllElements() as $item) { // Get some properties of a media item /* @var $item \Google\Photos\Library\V1\MediaItem */ $id = $item->getId(); $description = $item->getDescription(); $mimeType = $item->getMimeType(); $productUrl = $item->getProductUrl(); $filename = $item->getFilename(); } } catch (\Google\ApiCore\ApiException $e) { // Handle error }
Yanıt, en yeniden en az yeniye doğru sıralanmış bir medya öğesi listesini içerir.
Daha fazla bilgi için bkz.
mediaItems
. Aynı zamanda
Aşağıdaki bölümde daha ayrıntılı açıklanan bir nextPageToken
içerir:
Sayfaları numaralandırma.
Albüm içeriğini listeleme
Bir albümdeki tüm medya öğelerini listelemek için albumId
alanını
arama isteği. albumId
hakkında daha fazla bilgi için bkz. Giriş
albümleri ve Paylaşılan albümleri listeleme'yi tıklayın. Eğer
albumId
geçersizse Bad Request
hatası döndürülür. Kimlik geçerliyse
ancak kimliği doğrulanan kullanıcı için albüm mevcut değilse Not Found
hatası
geri döndü. Hata işlemeyle ilgili daha fazla bilgi için Performans
ipuçları ve En iyi
uygulamalar.
REST
Örnek bir istek:
POST https://photoslibrary.googleapis.com/v1/mediaItems:search
Content-type: application/json
Authorization: Bearer oauth2-token
{
"pageSize": "100",
"albumId": "album-id"
}
POST isteği aşağıdaki yanıtı döndürür:
{ "mediaItems": [ ... ], "nextPageToken": "token-for-pagination" }
Java
try { // Make a request to list all media items in an album // Provide the ID of the album as a parameter in the searchMediaItems call // Iterate over all the retrieved media items SearchMediaItemsPagedResponse response = photosLibraryClient.searchMediaItems(albumId); for (MediaItem item : response.iterateAll()) { // ... } } catch (ApiException e) { // Handle error }
PHP
try { // Make a request to list all media items in an album // Provide the ID of the album as a parameter in the searchMediaItems call // Iterate over all the retrieved media items $response = $photosLibraryClient->searchMediaItems(['albumId' => $albumId]); foreach ($response->iterateAllElements() as $item) { // ... } } catch (\Google\ApiCore\ApiException $e) { // Handle error }
Yanıt, bir nextPageToken
ve medya öğelerinin listesini içerir. Beğenmeme durumu:
kitaplık içeriklerini listelediğinde, medya öğeleri
albümünüz. Daha fazla bilgi için bkz.
mediaItems
ve Sayfaları numaralandırma. Kullanıcı siparişi şurada düzenleyebilir:
Google Fotoğraflar arayüzü.
albumId
ayarlanırsa albüm içeriklerini listelerken filtre uygulayamazsınız.
Bu işlem Bad Request
hatasına neden olur.
Paylaşılan albümleri listeleme
Kullanıcının paylaştığı veya daha önce paylaşmış olduğu tüm albümlerin listesini bir kullanıcıyla paylaşıldı. Bu, Google Fotoğraflar uygulaması.
Kullanıcının Google Fotoğraflar kitaplığına eklediği paylaşılan albümler albümleri listeleme çağrısında da döndürülür. Şunu yapın: paylaşılan albümleri Library API aracılığıyla listelemek için gerçekleştirilen aşağıdaki çağrı:
REST
Örnek bir istek:
GET https://photoslibrary.googleapis.com/v1/sharedAlbums
İstek aşağıdaki sonucu döndürür:
{ "sharedAlbums": [...] "nextPageToken": "token-for-pagination" }
Java
try { // Make a request to list all albums that have been shared by the user // Iterate over all the albums in this list // Pagination is handled automatically ListSharedAlbumsPagedResponse response = photosLibraryClient.listSharedAlbums(); for (Album album : response.iterateAll()) { // .. } } catch (ApiException e) { // Handle error }
PHP
try { // Make a request to list all albums that have been shared by the user // Iterate over all the albums in this list // Pagination is handled automatically $response = $photosLibraryClient->listSharedAlbums(); foreach ($response->iterateAllElements() as $album) { // ... } } catch (\Google\ApiCore\ApiException $e) { // Handle error }
sharedAlbums
albümüne bir albüm listesi eklendi. Daha fazla bilgi için bkz.
Albümleri listeleme. Yanıt da bir nextPageToken
içeriyor.
Daha fazla bilgi için Sayfaları numaralandırma bölümüne bakın.
Uygulamanızın oluşturup paylaştığı albümler ek bir shareInfo
Daha fazla bilgi için Paylaşma bölümüne bakın
medya.
Uygulama tarafından oluşturulan albümleri listeleme
Uygulamanız tarafından oluşturulan albümleri
excludeNonAppCreatedData
, şu görüşmelerde true
olarak ayarlandı:
REST
Kullanıcının albümündeki tüm albümlerin listelenmesi için bir GET isteği Yalnızca uygulamanız tarafından oluşturulan Google Fotoğraflar kitaplığı:
GET https://photoslibrary.googleapis.com/v1/albums?excludeNonAppCreatedData=true Content-type: application/json Authorization: Bearer oauth2-token
Kullanıcının albümündeki tüm paylaşılan albümleri listelemek için bir GET isteği Yalnızca uygulamanız tarafından oluşturulan Google Fotoğraflar kitaplığı:
GET https://photoslibrary.googleapis.com/v1/sharedAlbums?excludeNonAppCreatedData=true Content-type: application/json Authorization: Bearer oauth2-token
Java
try { // Make a request to list all albums that have been created by your app boolean excludeNonAppCreatedData = true; // Iterate over all the albums in this list // Pagination is handled automatically ListAlbumsPagedResponse response = photosLibraryClient.listAlbums(excludeNonAppCreatedData); for (Album album : response.iterateAll()) { // .. } } catch (ApiException e) { // Handle error } try { // Make a request to list all shared albums that have been created by your app boolean excludeNonAppCreatedData = true; // Iterate over all the albums in this list // Pagination is handled automatically ListSharedAlbumsPagedResponse response = photosLibraryClient.listSharedAlbums(excludeNonAppCreatedData); for (Album album : response.iterateAll()) { // .. } } catch (ApiException e) { // Handle error }
PHP
try { // Make a request to list all albums that have been created by your app $response = $photosLibraryClient->listAlbums(['excludeNonAppCreatedData' => true]); // Iterate over all the albums in this list // Pagination is handled automatically foreach ($response->iterateAllElements() as $album) { // ... } } catch (\Google\ApiCore\ApiException $e) { // Handle error } try { // Make a request to list all shared albums that have been created by your app $response = $photosLibraryClient->listSharedAlbums(['excludeNonAppCreatedData' => true]); // Iterate over all the albums in this list // Pagination is handled automatically foreach ($response->iterateAllElements() as $album) { // ... } } catch (\Google\ApiCore\ApiException $e) { // Handle error }
REST için sayfalara ayırma
Performansı artırmak için çok sayıda sonuç döndüren yöntemler (ör.
listesi yöntemleri) yanıtı sayfalara ayırabilir. Her bir sorgu için maksimum sonuç sayısı
sayfası, pageSize
parametresiyle verilir.
mediaItems:search
ve mediaItems:list
çağrıları için varsayılan sayfa boyutu
25 öğe. Bu sayfa boyutunu öneririz çünkü sayfa boyutu ile
yanıt boyutu ve doluluk oranıdır. Medya öğesi için maksimum sayfa boyutu
arama ve liste istekleri 100 öğedir.
Albümlerin listelenmesi için varsayılan ve önerilen sayfa boyutu 20 albümdür ve en fazla 50 albüm.
Kullanılabilir sonuçların sayısı sayfa boyutundan fazla olduğunda, yanıt
uygulamanıza bunu belirten bir nextPageToken
içerir
daha fazla sonuç getirilir.
Örnek
nextPageToken
öğesini, parametrede sonraki isteklere eklemeniz gerekir
pageToken
olarak ayarlanmıştır. pageToken
öğesini birlikte belirtin
isteğe bağlı olarak veya bir sorgu parametresi olarak ekleyebilirsiniz.
1. İstek
{ "pageSize": "5", "filters": { … } }
Yanıt 1
{ "mediaItem": [ … ], "nextPageToken": "next-page-token" }
2. İstek
{ "pageSize": "5", "filters": { … }, "pageToken": "page-token" }
Yanıt 2
{ "mediaItem": [ … ], "nextPageToken": "next-page-token" }
Başka nextPageToken
nesne kalmayıncaya kadar bu desene devam edin.
nextPageToken
yalnızca aynı istek için geçerlidir. Herhangi bir parametre
daha önce kullanılmış bir nextPageToken
, aynı
isteğinde bulunabilirsiniz.