Penautan Akun Google dengan OAuth

Akun ditautkan menggunakan standar industri OAuth 2.0 implisit dan aliran kode otorisasi . Layanan Anda harus mendukung otorisasi yang sesuai dengan OAuth 2.0 dan titik akhir pertukaran token .

Dalam alur implisit , Google membuka titik akhir otorisasi Anda di browser pengguna. Setelah berhasil masuk, Anda mengembalikan token akses berumur panjang ke Google. Token akses ini sekarang disertakan dalam setiap permintaan yang dikirim dari Google.

Dalam alur kode otorisasi , Anda memerlukan dua titik akhir:

  • Titik akhir otorisasi , yang menampilkan UI masuk kepada pengguna Anda yang belum masuk. Titik akhir otorisasi juga membuat kode otorisasi berumur pendek untuk mencatat persetujuan pengguna atas akses yang diminta.

  • Titik akhir pertukaran token , yang bertanggung jawab atas dua jenis pertukaran:

    1. Menukar kode otorisasi untuk token penyegaran berumur panjang dan token akses berumur pendek. Pertukaran ini terjadi saat pengguna melewati alur penautan akun.
    2. Menukar token penyegaran berumur panjang dengan token akses berumur pendek. Pertukaran ini terjadi ketika Google membutuhkan token akses baru karena sudah kedaluwarsa.

Pilih aliran OAuth 2.0

Meskipun aliran implisit lebih sederhana untuk diterapkan, Google merekomendasikan agar token akses yang dikeluarkan oleh aliran implisit tidak pernah kedaluwarsa. Ini karena pengguna dipaksa untuk menautkan akunnya lagi setelah token kedaluwarsa dengan aliran implisit. Jika Anda memerlukan token kedaluwarsa karena alasan keamanan, kami sangat menyarankan agar Anda menggunakan alur kode otorisasi sebagai gantinya.

Pedoman desain

Bagian ini menjelaskan persyaratan desain dan rekomendasi untuk layar pengguna yang Anda hosting untuk alur penautan OAuth. Setelah dipanggil oleh aplikasi Google, platform Anda menampilkan halaman masuk ke Google dan layar persetujuan penautan akun kepada pengguna. Pengguna diarahkan kembali ke aplikasi Google setelah memberikan persetujuan mereka untuk menautkan akun.

Gambar ini menunjukkan langkah-langkah bagi pengguna untuk menautkan akun Google mereka ke sistem otentikasi Anda. Tangkapan layar pertama menunjukkan penautan yang dimulai pengguna dari platform Anda. Gambar kedua menunjukkan pengguna masuk ke Google, sedangkan gambar ketiga menunjukkan persetujuan dan konfirmasi pengguna untuk menautkan akun Google mereka dengan aplikasi Anda. Tangkapan layar terakhir menunjukkan akun pengguna yang berhasil ditautkan di aplikasi Google.
Gambar 1. Pengguna yang menautkan akun masuk ke Google dan layar persetujuan.

Persyaratan

  1. Anda harus menyampaikan bahwa akun pengguna akan ditautkan ke Google, bukan produk Google tertentu seperti Google Home atau Asisten Google.

Rekomendasi

Kami menyarankan Anda melakukan hal berikut:

  1. Tampilkan Kebijakan Privasi Google. Sertakan tautan ke Kebijakan Privasi Google di layar persetujuan.

  2. Data untuk dibagikan. Gunakan bahasa yang jelas dan ringkas untuk memberi tahu pengguna data apa yang dibutuhkan Google mereka dan mengapa.

  3. Ajakan bertindak yang jelas. Nyatakan ajakan bertindak yang jelas di layar persetujuan Anda, seperti "Setuju dan tautkan". Ini karena pengguna perlu memahami data apa yang mereka butuhkan untuk dibagikan dengan Google untuk menautkan akun mereka.

  4. Kemampuan untuk membatalkan. Sediakan cara bagi pengguna untuk kembali atau membatalkan, jika mereka memilih untuk tidak menautkan.

  5. Hapus proses masuk. Pastikan pengguna memiliki metode yang jelas untuk masuk ke akun Google mereka, seperti bidang untuk nama pengguna dan sandi atau Masuk dengan Google .

  6. Kemampuan untuk membatalkan tautan. Tawarkan mekanisme bagi pengguna untuk membatalkan tautan, seperti URL ke pengaturan akun mereka di platform Anda. Atau, Anda dapat menyertakan tautan ke Akun Google tempat pengguna dapat mengelola akun tertaut mereka.

  7. Kemampuan untuk mengubah akun pengguna. Sarankan metode bagi pengguna untuk mengalihkan akun mereka. Ini sangat bermanfaat jika pengguna cenderung memiliki banyak akun.

    • Jika pengguna harus menutup layar persetujuan untuk beralih akun, kirimkan kesalahan yang dapat dipulihkan ke Google sehingga pengguna dapat masuk ke akun yang diinginkan dengan penautan OAuth dan alur implisit .
  8. Sertakan logo Anda. Tampilkan logo perusahaan Anda di layar persetujuan. Gunakan pedoman gaya Anda untuk menempatkan logo Anda. Jika Anda juga ingin menampilkan logo Google, lihat Logo dan merek dagang .

Buat proyek

Untuk membuat proyek Anda untuk menggunakan penautan akun:

  1. Go to the Google API Console.
  2. Klik Buat proyek .
  3. Masukkan nama atau terima saran yang dihasilkan.
  4. Konfirmasikan atau edit bidang yang tersisa.
  5. Klik Buat .

Untuk melihat ID proyek Anda:

  1. Go to the Google API Console.
  2. Temukan proyek Anda di tabel di halaman arahan. ID proyek muncul di kolom ID .

Proses Penautan Akun Google mencakup layar persetujuan yang memberi tahu pengguna aplikasi yang meminta akses ke data mereka, jenis data apa yang mereka minta, dan persyaratan yang berlaku. Anda perlu mengonfigurasi layar persetujuan OAuth Anda sebelum membuat ID klien Google API.

  1. Buka halaman layar persetujuan OAuth dari konsol Google API.
  2. Jika diminta, pilih proyek yang baru saja Anda buat.
  3. Di halaman "Layar persetujuan OAuth", isi formulir dan klik tombol "Simpan".

    Nama aplikasi: Nama aplikasi yang meminta persetujuan. Nama harus secara akurat mencerminkan aplikasi Anda dan konsisten dengan nama aplikasi yang dilihat pengguna di tempat lain. Nama aplikasi akan ditampilkan di layar persetujuan Penautan Akun.

    Logo aplikasi: Gambar di layar persetujuan yang akan membantu pengguna mengenali aplikasi Anda. Logo tersebut ditampilkan di layar persetujuan penautan Akun dan di pengaturan akun

    Email dukungan: Agar pengguna menghubungi Anda jika ada pertanyaan tentang persetujuan mereka.

    Cakupan untuk Google API: Cakupan memungkinkan aplikasi Anda mengakses data Google pribadi pengguna Anda. Untuk kasus penggunaan Penautan Akun Google, cakupan default (email, profil, openid) sudah cukup, Anda tidak perlu menambahkan cakupan sensitif apa pun. Biasanya praktik terbaik adalah meminta cakupan secara bertahap, pada saat akses diperlukan, bukan di awal. Pelajari lebih lanjut .

    Domain resmi: Untuk melindungi Anda dan pengguna Anda, Google hanya mengizinkan aplikasi yang mengautentikasi menggunakan OAuth untuk menggunakan Domain Resmi. Tautan aplikasi Anda harus dihosting di Domain Resmi. Pelajari lebih lanjut .

    Tautan Beranda Aplikasi: Beranda untuk aplikasi Anda. Harus dihosting di Domain Resmi.

    Tautan Kebijakan Privasi Aplikasi: Ditampilkan di layar persetujuan Penautan Akun Google. Harus dihosting di Domain Resmi.

    Tautan Persyaratan Layanan Aplikasi (Opsional): Harus dihosting di Domain Resmi.

    Gambar 1 . Layar Persetujuan Penautan Akun Google untuk Aplikasi fiktif, Tunery

  4. Periksa "Status Verifikasi", jika aplikasi Anda membutuhkan verifikasi, klik tombol "Kirim Untuk Verifikasi" untuk mengirimkan aplikasi Anda untuk verifikasi. Lihat persyaratan verifikasi OAuth untuk mengetahui detailnya.

Terapkan server OAuth Anda

Untuk mendukung aliran implisit OAuth 2.0, layanan Anda menyediakan titik akhir otorisasi melalui HTTPS. Titik akhir ini bertanggung jawab untuk otentikasi dan mendapatkan persetujuan dari pengguna untuk akses data. Titik akhir otorisasi menampilkan UI masuk kepada pengguna Anda yang belum masuk dan mencatat persetujuan untuk akses yang diminta.

Saat aplikasi Google perlu memanggil salah satu API resmi layanan Anda, Google menggunakan titik akhir ini untuk mendapatkan izin dari pengguna Anda untuk memanggil API ini atas nama mereka.

Sesi aliran implisit OAuth 2.0 khas yang dimulai oleh Google memiliki aliran berikut:

  1. Google membuka titik akhir otorisasi Anda di browser pengguna. Pengguna masuk, jika belum masuk, dan memberi Google izin untuk mengakses data mereka dengan API Anda, jika mereka belum memberikan izin.
  2. Layanan Anda membuat token akses dan mengembalikannya ke Google. Untuk melakukannya, alihkan kembali browser pengguna ke Google dengan token akses yang dilampirkan ke permintaan.
  3. Google memanggil API layanan Anda dan melampirkan token akses dengan setiap permintaan. Layanan Anda memverifikasi bahwa token akses memberi Google otorisasi untuk mengakses API dan kemudian menyelesaikan panggilan API.

Tangani permintaan otorisasi

Saat aplikasi Google perlu melakukan penautan akun melalui aliran implisit OAuth 2.0, Google mengarahkan pengguna ke titik akhir otorisasi Anda dengan permintaan yang menyertakan parameter berikut:

Parameter titik akhir otorisasi
client_id ID klien yang Anda tetapkan ke Google.
redirect_uri URL yang Anda kirimi tanggapan atas permintaan ini.
state Nilai pembukuan yang dikembalikan ke Google tidak berubah di URI pengalihan.
response_type Jenis nilai yang akan dikembalikan dalam respons. Untuk aliran implisit OAuth 2.0, jenis respons selalu berupa token .
user_locale Setelan bahasa Akun Google dalam format RFC5646 digunakan untuk melokalkan konten Anda ke bahasa pilihan pengguna.

Misalnya, jika endpoint otorisasi Anda tersedia di https://myservice.example.com/auth , permintaannya mungkin terlihat seperti berikut:

GET https://myservice.example.com/auth?client_id=GOOGLE_CLIENT_ID&redirect_uri=REDIRECT_URI&state=STATE_STRING&response_type=token&user_locale=LOCALE

Agar titik akhir otorisasi Anda menangani permintaan masuk, lakukan langkah-langkah berikut:

  1. Verifikasi nilai client_id dan redirect_uri untuk mencegah pemberian akses ke aplikasi klien yang tidak diinginkan atau salah konfigurasi:

    • Konfirmasikan bahwa client_id cocok dengan ID klien yang Anda tetapkan ke Google.
    • Konfirmasikan bahwa URL yang ditentukan oleh parameter redirect_uri memiliki format berikut:
      https://oauth-redirect.googleusercontent.com/r/YOUR_PROJECT_ID
      https://oauth-redirect-sandbox.googleusercontent.com/r/YOUR_PROJECT_ID
      
  2. Periksa apakah pengguna masuk ke layanan Anda. Jika pengguna tidak login, selesaikan proses login atau pendaftaran layanan Anda.

  3. Buat token akses untuk digunakan Google untuk mengakses API Anda. Token akses dapat berupa nilai string apa pun, tetapi harus secara unik mewakili pengguna dan klien tempat token tersebut dan tidak boleh dapat ditebak.

  4. Kirim respons HTTP yang mengalihkan browser pengguna ke URL yang ditentukan oleh parameter redirect_uri . Sertakan semua parameter berikut di fragmen URL:

    • access_token : Token akses yang baru saja Anda buat
    • token_type : bearer string
    • state : Nilai status yang tidak dimodifikasi dari permintaan asli

    Berikut ini adalah contoh dari URL yang dihasilkan:

    https://oauth-redirect.googleusercontent.com/r/YOUR_PROJECT_ID#access_token=ACCESS_TOKEN&token_type=bearer&state=STATE_STRING

Penangan pengalihan OAuth 2.0 Google menerima token akses dan mengonfirmasi bahwa nilai state tidak berubah. Setelah Google mendapatkan token akses untuk layanan Anda, Google melampirkan token tersebut ke panggilan berikutnya ke API layanan Anda.

Memvalidasi implementasi Anda

Anda dapat memvalidasi implementasi Anda dengan menggunakan OAuth 2.0 Playground alat.

Pada alat, lakukan langkah-langkah berikut:

  1. Klik Konfigurasi untuk membuka jendela Configuration OAuth 2.0.
  2. Di bidang aliran OAuth, pilih Client-side.
  3. Di bidang OAuth endpoint, pilih Custom.
  4. Tentukan titik akhir OAuth 2.0 dan ID klien yang Anda tetapkan ke Google di bidang yang sesuai.
  5. Pada bagian Langkah 1, tidak memilih lingkup Google. Sebagai gantinya, biarkan bidang ini kosong atau ketik cakupan yang valid untuk server Anda (atau string arbitrer jika Anda tidak menggunakan cakupan OAuth). Setelah selesai, klik Otorisasi API.
  6. Dalam Langkah 2 dan Langkah 3 bagian, melalui aliran OAuth 2.0 dan memverifikasi bahwa setiap langkah bekerja sebagaimana dimaksud.

Anda dapat memvalidasi implementasi Anda dengan menggunakan Akun Google Menghubungkan Demo alat.

Pada alat, lakukan langkah-langkah berikut:

  1. Klik Sign-in dengan tombol Google.
  2. Pilih akun yang ingin Anda tautkan.
  3. Masukkan ID layanan.
  4. Secara opsional, masukkan satu atau beberapa cakupan yang akan Anda minta aksesnya.
  5. Klik Mulai Demo.
  6. Saat diminta, konfirmasikan bahwa Anda dapat menyetujui dan menolak permintaan penautan.
  7. Konfirmasikan bahwa Anda dialihkan ke platform Anda.