Praktik terbaik

Otorisasi

Semua permintaan ke Google Photos API harus diizinkan oleh pengguna terautentikasi.

Detail proses otorisasi untuk OAuth 2.0 sedikit berbeda bergantung pada jenis aplikasi yang Anda tulis. Proses umum berikut berlaku untuk semua jenis aplikasi:

  1. Bersiaplah untuk proses otorisasi dengan melakukan hal berikut:
    • Daftarkan aplikasi Anda menggunakan Konsol API Google.
    • Aktifkan Photos API dan ambil detail OAuth seperti client ID dan secret client. Untuk informasi selengkapnya, lihat Mulai.
  2. Untuk mengakses data pengguna, aplikasi membuat permintaan ke Google untuk cakupan akses tertentu.
  3. Google menampilkan layar izin kepada pengguna yang meminta mereka untuk memberikan otorisasi aplikasi untuk meminta beberapa data mereka.
  4. Jika pengguna menyetujui, Google akan memberikan token akses ke aplikasi yang akan berakhir masa berlakunya setelah beberapa saat.
  5. Aplikasi membuat permintaan untuk data pengguna, dengan melampirkan token akses ke permintaan.
  6. Jika Google menentukan bahwa permintaan dan token tersebut valid, data yang diminta akan ditampilkan.

Untuk menentukan cakupan yang sesuai untuk aplikasi Anda, lihat Cakupan otorisasi.

Proses untuk beberapa jenis aplikasi mencakup langkah-langkah tambahan, seperti menggunakan token refresh untuk memperoleh token akses baru. Untuk informasi selengkapnya tentang alur untuk berbagai jenis aplikasi, lihat Menggunakan OAuth 2.0 untuk Mengakses Google API.

Menyimpan ke cache

Pastikan data selalu diperbarui.

Jika Anda perlu menyimpan media untuk sementara (seperti thumbnail, foto, atau video) karena alasan performa, jangan menyimpannya dalam cache selama lebih dari 60 menit sesuai dengan pedoman penggunaan kami.

Anda juga tidak boleh menyimpan baseUrls, yang masa berlakunya akan habis setelah sekitar 60 menit.

ID item media dan ID album yang mengidentifikasi konten secara unik di koleksi pengguna dikecualikan dari pembatasan penyimpanan dalam cache. Anda dapat menyimpan ID ini tanpa batas waktu (tunduk kepada kebijakan privasi aplikasi Anda). Gunakan ID item media dan ID album untuk mengambil kembali URL dan data yang dapat diakses menggunakan endpoint yang sesuai. Untuk mengetahui informasi selengkapnya, lihat Mendapatkan item media atau Mencantumkan album.

Jika Anda memiliki banyak item media yang akan diperbarui, sebaiknya simpan parameter penelusuran yang menampilkan item media dan kirim ulang kueri untuk memuat ulang data.

Akses SSL

HTTPS diperlukan untuk semua permintaan layanan web Photos API yang menggunakan URL berikut:

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

Permintaan yang dibuat melalui HTTP akan ditolak.

Penanganan error

Untuk informasi tentang cara menangani error yang ditampilkan dari API, lihat Penanganan error Cloud API.

Mencoba lagi permintaan yang gagal

Klien harus mencoba lagi pada error 5xx dengan backoff eksponensial seperti yang dijelaskan dalam Backoff eksponensial. Penundaan minimum harus 1 s kecuali jika didokumentasikan sebaliknya.

Untuk error 429, klien dapat mencoba lagi dengan penundaan 30s minimum. Untuk semua lainnya error, percobaan ulang mungkin tidak dapat diterapkan. Pastikan permintaan Anda idempoten dan lihat pesan {i>error<i} sebagai panduan.

Backoff eksponensial

Dalam kasus yang jarang terjadi, bisa terjadi sesuatu yang salah saat melayani permintaan Anda. Anda dapat menerima kode respons HTTP 4XX atau 5XX, atau koneksi TCP dapat mengalami kegagalan antara klien Anda dan server Google. Sering kali, ada baiknya untuk mencoba kembali permintaan. Permintaan tindak lanjut mungkin berhasil saat permintaan asli gagal. Namun, sebaiknya Anda tidak melakukan loop, berulang kali membuat permintaan ke server Google. Perilaku loop ini dapat menyebabkan kelebihan beban pada jaringan antara klien Anda dan Google serta menyebabkan masalah bagi banyak pihak.

Pendekatan terbaik adalah mencoba ulang dengan meningkatkan waktu tunda antar percobaan. Biasanya, waktu tunda ditingkatkan dengan faktor perkalian pada setiap percobaan, pendekatan yang dikenal sebagai Backoff eksponensial.

Anda juga harus berhati-hati bahwa tidak ada percobaan ulang kode yang lebih tinggi di rangkaian panggilan aplikasi yang menyebabkan permintaan berulang dalam urutan yang cepat.

Penggunaan Google API yang sopan

Klien API yang tidak dirancang dengan baik dapat menempatkan lebih banyak beban daripada yang diperlukan pada internet dan di server Google. Bagian ini berisi beberapa praktik terbaik untuk klien API. Mengikuti praktik terbaik ini dapat membantu Anda menghindari aplikasi Anda diblokir karena penyalahgunaan API yang tidak hati-hati.

Permintaan yang disinkronkan

Sejumlah besar permintaan yang disinkronkan ke API Google dapat terlihat seperti serangan {i>Distributed Denial of Service <i}(DDoS) terhadap infrastruktur Google, dan dan diperlakukan sebagaimana mestinya. Untuk menghindarinya, Anda harus memastikan bahwa permintaan API tidak disinkronkan antara klien.

Misalnya, pertimbangkan aplikasi yang menampilkan waktu dalam zona waktu saat ini. Aplikasi ini mungkin akan menyetel alarm di sistem operasi klien membangunkannya di awal menit sehingga waktu yang ditampilkan dapat diperbarui. Aplikasi tidak boleh membuat panggilan API sebagai bagian dari pemrosesan yang terkait dengan alarm tersebut.

Melakukan panggilan API untuk merespons alarm yang sudah diperbaiki adalah hal yang buruk karena menghasilkan Panggilan API disinkronkan ke awal menit, bahkan antara perbedaan perangkat Anda, bukan didistribusikan secara merata dari waktu ke waktu. Desain yang buruk aplikasi yang melakukan hal ini menghasilkan lonjakan traffic pada tingkat enam puluh kali lipat dari biasanya di awal setiap menit.

Sebagai gantinya, satu rancangan yang mungkin baik adalah menyetel alarm kedua ke waktu yang dipilih secara acak. Bila alarm kedua ini dipicu, aplikasi akan melakukan panggilan ke semua API yang diperlukan dan menyimpan hasilnya. Untuk memperbarui tampilannya di awal menit, aplikasi menggunakan hasil yang disimpan sebelumnya, bukan memanggil API lagi. Dengan pendekatan ini, panggilan API tersebar dengan rata. Selain itu, panggilan API tidak menunda rendering saat tampilan sedang diperbarui.

Selain dari awal menit, waktu sinkronisasi umum lain yang Anda harus berhati-hati untuk tidak menargetkan adalah di awal jam dan awal setiap hari pada tengah malam.