Sprawdzone metody

Autoryzacja

Wszystkie żądania wysyłane do interfejsów API Zdjęć Google muszą być autoryzowane przez użytkownika.

Szczegóły procesu autoryzacji OAuth 2.0 różnią się nieco w zależności od w związku z rodzajem Państwa zgłoszenia. Do wszystkich typów aplikacji ma zastosowanie ten ogólny proces:

  1. Przygotuj się do procesu autoryzacji, wykonując te czynności:
    • Zarejestruj aplikację za pomocą Konsola interfejsów API Google.
    • Aktywuj interfejsy API Zdjęć i pobierz szczegóły OAuth, takie jak identyfikator klienta i tajny klucz klienta. Więcej informacji: Rozpocznij
  2. Aby uzyskać dostęp do danych użytkownika, aplikacja wysyła do Google żądanie o określony zakres dostępu.
  3. Google wyświetla użytkownikowi ekran zgody z prośbą o autoryzację o niektóre z nich.
  4. Jeśli użytkownik wyrazi zgodę, Google przekazuje aplikacji token dostępu, który wygasa po krótkim czasie.
  5. Aplikacja wysyła żądanie udostępnienia danych użytkownika i załącza token dostępu. do danej prośby.
  6. Jeśli Google ustali, że żądanie i token są prawidłowe, zwraca żądane dane.

Aby określić, które zakresy są odpowiednie dla Twojej aplikacji, zapoznaj się z sekcją Autoryzacja .

W przypadku niektórych typów aplikacji proces obejmuje dodatkowe kroki, takie jak wykorzystanie tokenów odświeżania do uzyskania nowych tokenów dostępu. Szczegółowe informacje na temat: procedury dla różnych typów aplikacji znajdziesz w artykule Korzystanie z protokołu OAuth 2.0 do uzyskiwania dostępu do Google interfejsów API.

Pamięć podręczna

Dbaj o aktualność danych.

Jeśli ze względu na wydajność musisz tymczasowo przechowywać treści multimedialne (np. miniatury, zdjęcia lub filmy), nie przechowuj ich w pamięci podręcznej dłużej niż 60 minut zgodnie z naszymi wskazówkami dotyczącymi korzystania.

Nie przechowuj też plików baseUrls, które wygasają po około 60 sekundach min.

Identyfikatory multimediów i albumów, które jednoznacznie identyfikują treści w bibliotece użytkownika, są zwolnione z ograniczeń dotyczących buforowania. Te identyfikatory możesz przechowywać bez ograniczeń czasowych (zgodnie z polityką prywatności aplikacji). Używanie identyfikatorów elementów multimedialnych i albumów aby ponownie pobrać dostępne adresy URL i dane za pomocą odpowiednich punktów końcowych. Więcej informacji znajdziesz w artykule Pobieranie multimediów lub Wyświetlanie albumów.

Jeśli masz wiele elementów multimedialnych do odświeżenia, może być wydajniejsze przechowywanie parametrów wyszukiwania, które zwróciły te elementy, i ponownie przesyłanie zapytania w celu ponownego załadowania danych.

Dostęp przez SSL

Protokół HTTPS jest wymagany w przypadku wszystkich żądań usług internetowych interfejsów API Zdjęć, które korzystają z protokołu ten adres URL:

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

Żądania przesyłane przez HTTP są odrzucane.

Obsługa błędów

Informacje o tym, jak postępować w przypadku błędów zwróconych przez interfejs API, znajdziesz w sekcji dotyczącej Cloud Obsługa interfejsów API .

Ponawianie nieudanych żądań

W przypadku błędów 5xx klienci powinni podejmować kolejne próby z wzrastającym czasem do ponownej próby zgodnie z opisem w sekcji Wzrastający czas do ponownej próby. Minimalny czas opóźnienia powinien wynosić 1 s, chyba że określono inaczej.

W przypadku 429 błędów klient może ponowić próbę z minimalnym opóźnieniem 30s. Pozostałe urządzenia błędy, ponowienie próby może nie mieć zastosowania. Upewnij się, że żądanie jest idempotentne i zobacz zobaczysz komunikat o błędzie.

Wzrastający czas do ponownej próby

W rzadkich przypadkach może wystąpić błąd podczas obsługi Twojego żądania. Możesz otrzymać kod odpowiedzi HTTP 4XX lub 5XX albo połączenie TCP może się nie udać gdzieś między klientem a serwerem Google. Często warto ponownie wysłać żądanie. Ponowne żądanie może się powieść, gdy pierwotne nie powiodło się. Pamiętaj jednak: Ważne jest, by nie zapętlać się, wielokrotnie wysyłać żądania do serwerów Google. Takie zachowanie może spowodować przeciążenie sieci między klientem a Google i spowodować problemy dla wielu stron.

Lepszym podejściem jest ponowne próbowanie z rosnącymi opóźnieniami między próbami. Zazwyczaj opóźnienie jest zwiększane o współczynnik mnożenia przy każdej próbie. Takie podejście nazywa się wykładniczym zmniejszaniem.

Zadbaj też o to, by w aplikacji nie znaleziono kodu, który ponowił próbę łańcuch wywołań, który prowadzi do powtarzających się żądań w krótkich odstępach czasu.

Kontrolowane korzystanie z interfejsów API Google

Źle zaprojektowane klienty interfejsu API mogą nakładać większe obciążenie niż to konieczne i na serwerach Google. W tej sekcji znajdziesz sprawdzone metody klientów interfejsów API. Stosowanie tych sprawdzonych metod może pomóc Ci uniknąć zablokowania aplikacji z powodu niezamierzonego nadużycia interfejsów API.

Zsynchronizowane żądania

Duża liczba synchronizowanych żądań do interfejsów API Google może wyglądać jak rozproszony atak typu DoS na infrastrukturę Google i być odpowiednio traktowana. Aby tego uniknąć, musisz zadbać o to, aby żądania interfejsu API nie były synchronizowane między klientami.

Weźmy na przykład aplikację, która wyświetla godzinę w bieżącej godzinie strefie. Aplikacja prawdopodobnie ustawi alarm w systemie operacyjnym klienta, który będzie ją wybudzać na początku minuty, aby zaktualizować wyświetlany czas. W trakcie przetwarzania aplikacja nie powinna wykonywać żadnych wywołań interfejsu API powiązane z tym alarmem.

Wykonywanie wywołań interfejsu API w odpowiedzi na naprawiony alarm jest szkodą, ponieważ skutkuje Wywołania interfejsu API synchronizowane na początku minuty, nawet między różnymi urządzeń, zamiast równomiernie rozkładać się w czasie. Źle zaprojektowana aplikacja powoduje na początku każdej minuty 60-krotny wzrost natężenia ruchu.

Zamiast tego można ustawić drugi alarm na losową godzinę. Po uruchomieniu tego drugiego alarmu aplikacja wywołuje interfejsów API, których potrzebuje, i przechowuje wyniki. Aby zaktualizować wyświetlanie na początku minuty, aplikacja używa wcześniej zapisanych wyników zamiast ponownie wywoływać interfejs API. Dzięki temu wywołania interfejsu API są rozłożone równomiernie w czasie. Co więcej, wywołania interfejsu API nie opóźniają renderowania podczas aktualizowania wyświetlacza.

Oprócz początku minuty inne typowe czasy synchronizacji należy pamiętać, że reklamy nie mogą znajdować się na początku godziny i początku codziennie o północy.