En iyi uygulamalar

Yetkilendirme

Google Photos Library API'ye yapılan tüm isteklerin, kimliği doğrulanmış bir kullanıcı tarafından yetkilendirilmesi gerekir.

OAuth 2.0 için 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 süreç tüm uygulama türleri için geçerlidir:

  1. Aşağıdakileri yaparak yetkilendirme işlemine hazırlanın:
    • Google API Konsolu'nu kullanarak uygulamanızı kaydedin.
    • Library API'yi etkinleştirin ve istemci kimliği ve istemci gizli anahtarı gibi OAuth ayrıntılarını alın. Daha fazla bilgi için Başlayın bölümüne bakın.
  2. Uygulama, kullanıcı verilerine erişmek için Google'dan belirli bir erişim kapsamını 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 bir istekte bulunur.
  6. Google, isteğin ve jetonun geçerli olduğunu belirlerse istenen verileri döndürür.

Uygulamanıza uygun kapsamları belirlemek için Yetkilendirme kapsamları'na bakın.

Bazı uygulama türleri için bu süreç, yeni erişim jetonları almak için yenileme jetonları kullanma gibi ek adımlar içerir. Çeşitli 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 bölümüne bakın.

Önbelleğe alma

Verileri güncel tutun.

Performans nedeniyle medyaları (küçük resimler, fotoğraflar veya videolar gibi) geçici olarak saklamanız gerekiyorsa kullanım kurallarımıza göre bunları 60 dakikadan uzun süre boyunca önbelleğe almayın.

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

Bir 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 Listeleme albümleri konularına bakın.

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 Library API web hizmeti istekleri için HTTPS gerekir:

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 işleneceği hakkında bilgi için Cloud API'leri Hataları işleme bölümüne bakın.

Başarısız istekleri yeniden deneme

İstemciler, Üstel geri yükleme bölümünde açıklandığı gibi eksponansiyel geri yükleme ile 5xx hatalarında yeniden deneme yapmalıdır. Aksi belgelenmediği sürece minimum gecikme 1 s olmalıdır.

429 hataları için istemci en az 30s gecikmeyle yeniden deneyebilir. Diğer tüm hatalarda yeniden deneme uygulanamayabilir. İsteğinizin benzersiz olduğundan emin olun ve yardım için hata mesajını inceleyin.

Eksponansiyel geri yükleme

Nadir durumlarda, isteğiniz yerine getirilirken bir şeyler ters gidebilir.4XX veya 5XX HTTP yanıt kodu alabilirsiniz ya da istemciniz ile Google'ın sunucusu arasındaki bir noktada TCP bağlantısı başarısız olabilir. Çoğunlukla isteği tekrar denemek faydalı olur. Orijinal istek başarısız olduğunda takip isteği başarılı olabilir. Ancak döngü oluşturmamak, Google sunucularına sürekli olarak istek göndermek önemlidir. Bu döngü davranışı, müşterinizle Google arasındaki ağın aşırı yüklenmesine neden olabilir ve birçok taraf için sorunlara yol açabilir.

Bu noktada, denemeler arasında artan gecikmeleri göstererek yeniden denemek daha iyi bir yaklaşımdır. Genellikle gecikme, her denemede üstel geri yükleme olarak bilinen bir yaklaşım olan çarpımsal bir faktör ile artar.

Ayrıca, uygulama çağrı zincirinde, hızlı bir şekilde tekrarlanan isteklere yol açan daha yüksek yeniden deneme kodları olmadığından da dikkatli olmanız gerekir.

Google API'lerinin sonradan kullanımı

Kötü tasarlanmış API istemcileri hem internette hem de Google'ın sunucularına gereğinden fazla yük yükleyebilir. 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 yapılan çok sayıda senkronize istek, Google'ın altyapısına yönelik bir Dağıtılmış Hizmet Reddi (DDoS) saldırısı gibi görünebilir ve buna göre ele alınır. Bunu önlemek için API isteklerinin istemciler arasında senkronize edilmediğinden emin olmanız gerekir.

Örneğin, saati geçerli saat diliminde görüntüleyen bir uygulama düşünün. Bu uygulama büyük olasılıkla, görüntülenen saatin güncellenebilmesi için istemci işletim sisteminde alarmı dakikanın başında uyandıracak. Uygulama, bu alarmla ilişkili işlemenin parçası olarak herhangi bir API çağrısı yapmamalıdır.

Sabit bir alarma yanıt olarak API çağrıları yapmak kötü bir durumdur. Bunun nedeni, API çağrılarının zaman içinde eşit olarak dağıtılmak yerine, farklı cihazlar arasında bile, dakikanın başına senkronize edilmesine yol açar. Bunu yapan kötü tasarlanmış bir uygulama, her dakika başında trafikte normal seviyenin altmış katı oranında bir artışa neden olur.

Bunun yerine olası iyi bir tasarım, rastgele seçilen bir zamana ikinci bir alarm ayarlamaktır. Bu ikinci alarm etkinleştiğinde uygulama, ihtiyaç duyduğu tüm API'lere çağrı yapar ve sonuçları depolar. Uygulama, dakikanın başında görüntüsünü güncellemek için API'yi tekrar çağırmak yerine önceden depolanan sonuçları kullanır. Bu yaklaşımla, API çağrıları zamanla eşit şekilde yayılır. Ayrıca API çağrıları, ekran güncellenirken oluşturma işlemini geciktirmez.

Dakikanın başlangıcı dışında, hedeflememeye dikkat etmeniz gereken diğer yaygın senkronizasyon zamanları da bir saatin başlangıcında ve her günün gece yarısındadır.