En iyi uygulamalar

Yetkilendirme

Google Fotoğraflar API'lerine gönderilen tüm isteklerin, kimliği doğrulanmış bir kullanıcı tarafından yetkilendirilmesi gerekir.

OAuth 2.0 ile yetkilendirme işleminin ayrıntıları, yazdığınız uygulamanın türüne bağlı olarak biraz farklılık gösterir. Aşağıdaki genel işlem tüm uygulama türleri için geçerlidir:

  1. Aşağıdakileri yaparak yetkilendirme sürecine hazırlanın:
    • Google API Konsolu'nu kullanarak uygulamanızı kaydedin.
    • Fotoğraflar API'lerini etkinleştirin ve istemci kimliği ile istemci gizli anahtarı gibi OAuth ayrıntılarını alın. Daha fazla bilgi için Başlayın başlıklı makaleyi inceleyin.
  2. Uygulama, kullanıcı verilerine erişmek için Google'dan belirli bir erişim kapsamı ister.
  3. Google, kullanıcıya uygulamayı kullanıcının verilerinden bazılarını istemeye yetkilendirmesi için bir izin ekranı gösterir.
  4. Kullanıcı onaylarsa Google, uygulamaya kısa bir süre sonra süresi dolan bir erişim jetonu sağlar.
  5. Uygulama, erişim jetonunu isteğe ekleyerek kullanıcı verileri için istekte bulunur.
  6. Google, isteğin ve jetonun geçerli olduğuna kanaat getirirse istenen verileri döndürür.

Uygulamanız için hangi kapsamların uygun olduğunu belirlemek üzere Yetkilendirme kapsamları bölümüne bakın.

Bazı uygulama türlerinde, yeni erişim jetonları almak için yenileme jetonları kullanmak gibi ek adımlar bulunur. Farklı uygulama türlerine yönelik akışlar hakkında ayrıntılı bilgi için Google API'lerine Erişmek için OAuth 2.0'ı Kullanma başlıklı makaleyi inceleyin.

Önbelleğe alma

Verileri güncel tutun.

Performans nedeniyle medya içeriklerini (ör. küçük resimler, fotoğraflar veya videolar) geçici olarak saklamanız gerekiyorsa kullanım yönergelerimize göre bu içerikleri 60 dakikadan uzun süre önbelleğe almayın.

Ayrıca, yaklaşık 60 dakika sonra süresi dolan baseUrls değerini de saklamamalısınız.

Kullanıcının kitaplığındaki içeriği benzersiz şekilde tanımlayan medya öğesi kimlikleri ve albüm kimlikleri, önbelleğe alma kısıtlamasından muaftır. Bu kimlikleri süresiz olarak saklayabilirsiniz (uygulamanızın gizlilik politikasına tabidir). Uygun uç noktaları kullanarak erişilebilir URL'leri ve verileri tekrar almak için medya öğesi kimliklerini ve albüm kimliklerini kullanın. Daha fazla bilgi için Medya öğesi alma veya Albümleri listeleme başlıklı makaleleri inceleyin.

Yenilenecek çok sayıda medya öğeniz varsa medya öğelerini döndüren arama parametrelerini depolamak ve verileri yeniden yüklemek için sorguyu yeniden göndermek daha verimli olabilir.

SSL erişimi

Aşağıdaki URL'yi kullanan tüm Fotoğraflar API'si web hizmeti istekleri için HTTPS gereklidir:

https://photoslibrary.googleapis.com/v1/service/output?parameters

HTTP üzerinden yapılan istekler reddedilir.

Hata işleme

API'den döndürülen hataların nasıl ele alınacağı hakkında bilgi edinmek için Cloud API'ler Hatalarla başa çıkma başlıklı makaleyi inceleyin.

Başarısız istekleri yeniden deneme

İstemciler, 5xx hatalarında eksponansiyel geri yükleme bölümünde açıklandığı gibi eksponansiyel geri yüklemeyle yeniden deneme yapmalıdır. Aksi belirtilmedikçe minimum gecikme 1 s olmalıdır.

429 hataları için istemci minimum 30s gecikmesiyle yeniden deneyebilir. Diğer tüm hatalar için yeniden deneme geçerli olmayabilir. İsteğinizin tekil olduğundan emin olun ve yol gösterici olması için hata mesajına bakın.

Eksponansiyel geri yükleme

Nadir durumlarda isteğinizin sunumu sırasında bir sorun yaşanabilir.4XX veya 5XX HTTP yanıt kodu alabilir ya da TCP bağlantısı istemciniz ile Google'ın sunucusu arasında bir noktada başarısız olabilir. Genellikle isteği tekrar denemek faydalı olur. Orijinal istek başarısız olduğunda takip isteği başarılı olabilir. Ancak, Google'ın sunucularına tekrar tekrar istek göndererek döngü oluşturmamak önemlidir. Bu döngü davranışı, istemciniz ile Google arasındaki ağda aşırı yük oluşturabilir ve birçok taraf için soruna neden olabilir.

Daha iyi bir yaklaşım, denemeler arasında artan gecikmeler uygulayarak yeniden denemektir. Genellikle, her denemeyle gecikme çarpma faktörü kadar artırılır. Bu yaklaşıma Üstel geri çekilme adı verilir.

Ayrıca, uygulama çağrı zincirinin üst kısmında, hızlı bir şekilde tekrarlanan isteklere yol açan bir yeniden deneme kodu olmadığından emin olmanız gerekir.

Google API'lerinin uygun şekilde kullanılması

Kötü tasarlanmış API istemcileri hem internete hem de Google'ın sunucularına gereğinden fazla yük bindirebilir. Bu bölümde, API istemcileri için bazı en iyi uygulamalar yer almaktadır. Bu en iyi uygulamalardan yararlanarak, API'lerin yanlışlıkla kötüye kullanılması nedeniyle uygulamanızın engellenmesini önleyebilirsiniz.

Senkronize istekler

Google'ın API'lerine gönderilen çok sayıda senkronize istek, Google'ın altyapısına yapılan bir Dağıtılmış Hizmet Reddi (DDoS) saldırısı gibi görünebilir ve buna göre ele alınabilir. Bunu önlemek için API isteklerinin istemciler arasında senkronize edilmediğinden emin olmanız gerekir.

Örneğin, geçerli saat diliminde saati gösteren bir uygulamayı düşünün. Bu uygulama, istemci işletim sisteminde bir alarm kurar ve gösterilen saatin güncellenebilmesi için dakikanın başında istemciyi uyandırır. Uygulama, bu alarmla ilişkili işleme kapsamında herhangi bir API çağrısı yapmamalıdır.

Sabit bir alarma yanıt olarak API çağrıları yapmak kötüdür çünkü API çağrılarının zaman içinde eşit olarak dağıtılması yerine, farklı cihazlar arasında bile dakikanın başlangıcıyla senkronize edilmesine neden olur. Kötü tasarlanmış bir uygulama, her dakikanın başında normal seviyelerin altmış katı kadar trafik sıçraması oluşturur.

Bunun yerine, rastgele seçilen bir saate ayarlanmış ikinci bir alarmın olması iyi bir tasarım olabilir. Bu ikinci alarm tetiklendiğinde uygulama, ihtiyaç duyduğu tüm API'lere çağrı yapar ve sonuçları depolar. Uygulama, dakikanın başında ekranını güncellemek için API'yi tekrar çağırmak yerine daha önce depolanan sonuçları kullanır. Bu yaklaşımda API çağrıları zaman içinde eşit olarak dağıtılır. Ayrıca, API çağrıları ekran güncellenirken oluşturmayı geciktirmez.

Dakikanın başlangıcı dışında, senkronizasyonu hedeflememeniz gereken diğer yaygın zaman aralıkları, bir saatin ve her günün başlangıcı olan gece yarısıdır.