Akun ditautkan menggunakan alur implisit dan kode otorisasi OAuth 2.0 standar industri. Layanan Anda harus mendukung endpoint otorisasi dan pertukaran token yang mematuhi OAuth 2.0.
Dalam alur implisit, Google akan membuka endpoint otorisasi Anda di browser pengguna. Setelah berhasil login, Anda akan menampilkan token akses dengan masa berlaku lama ke Google. Token akses ini kini disertakan dalam setiap permintaan yang dikirim dari Google.
Dalam alur kode otorisasi, Anda memerlukan dua endpoint:
Endpoint Authorization, yang menampilkan UI login kepada pengguna Anda yang belum login. Endpoint otorisasi juga membuat kode otorisasi berumur pendek untuk mencatat izin pengguna ke akses yang diminta.
Endpoint pertukaran token, yang bertanggung jawab atas dua jenis pertukaran:
- Menukar kode otorisasi dengan token refresh yang berumur panjang dan token akses yang berumur singkat. Pertukaran ini terjadi saat pengguna melalui alur penautan akun.
- Menukar token refresh yang memiliki masa aktif lama dengan token akses yang memiliki masa aktif singkat. Pertukaran ini terjadi saat Google memerlukan token akses baru karena token yang ada sudah tidak berlaku lagi.
Pilih alur OAuth 2.0
Meskipun alur implisit lebih mudah diterapkan, Google merekomendasikan agar token akses yang dikeluarkan oleh alur implisit tidak pernah berakhir masa berlakunya. Hal ini karena pengguna dipaksa untuk menautkan akunnya lagi setelah token berakhir masa berlakunya dengan alur implisit. Jika Anda memerlukan masa berlaku token karena alasan keamanan, sebaiknya gunakan alur kode otorisasi.
Panduan desain
Bagian ini menjelaskan persyaratan dan rekomendasi desain untuk layar pengguna yang Anda host untuk alur penautan OAuth. Setelah dipanggil oleh aplikasi Google, platform Anda akan menampilkan halaman login ke Google dan layar izin penautan akun ke pengguna. Pengguna akan diarahkan kembali ke aplikasi Google setelah memberikan izin untuk menautkan akun.
Persyaratan
- Anda harus menyampaikan bahwa akun pengguna akan ditautkan ke Google, bukan produk Google tertentu seperti Google Home atau Asisten Google.
Rekomendasi
Sebaiknya Anda melakukan hal berikut:
Menampilkan Kebijakan Privasi Google. Sertakan link ke Kebijakan Privasi Google di layar izin.
Data yang akan dibagikan. Gunakan bahasa yang jelas dan ringkas untuk memberi tahu pengguna data apa saja yang diperlukan Google dan alasannya.
Pesan ajakan (CTA) yang jelas. Nyatakan pesan ajakan yang jelas di layar izin, seperti “Setuju dan tautkan”. Hal ini karena pengguna perlu memahami data apa yang harus mereka bagikan kepada Google untuk menautkan akun mereka.
Kemampuan untuk membatalkan. Berikan cara bagi pengguna untuk kembali atau membatalkan, jika mereka memilih untuk tidak menautkan.
Proses login yang jelas. Pastikan pengguna memiliki metode yang jelas untuk login ke Akun Google mereka, seperti kolom untuk nama pengguna dan sandi mereka atau Login dengan Google.
Kemampuan untuk membatalkan tautan. Tawarkan mekanisme bagi pengguna untuk membatalkan tautan, seperti URL ke setelan akun mereka di platform Anda. Atau, Anda dapat menyertakan link ke Akun Google tempat pengguna dapat mengelola akun tertaut mereka.
Kemampuan untuk mengubah akun pengguna. Sarankan metode bagi pengguna untuk beralih akun. Hal ini sangat bermanfaat jika pengguna cenderung memiliki beberapa akun.
- Jika pengguna harus menutup layar izin untuk beralih akun, kirim error yang dapat dipulihkan ke Google sehingga pengguna dapat login ke akun yang diinginkan dengan penautan OAuth dan alur implisit.
Sertakan logo Anda. Menampilkan logo perusahaan Anda di layar izin. Gunakan panduan gaya untuk menempatkan logo. Jika Anda juga ingin menampilkan logo Google, lihat Logo dan merek dagang.
Membuat project
Untuk membuat project Anda agar dapat menggunakan penautan akun:
- Klik Buat proyek.
- Masukkan nama atau terima saran yang dibuat.
- Konfirmasi atau edit kolom yang tersisa.
- Klik Buat.
Untuk melihat project ID Anda:
- Cari project Anda di tabel pada halaman landing. Project ID muncul di kolom ID.
Mengonfigurasi Layar Izin OAuth Anda
Proses Penautan Akun Google mencakup layar izin yang memberi tahu pengguna aplikasi yang meminta akses ke data mereka, jenis data yang diminta, dan persyaratan yang berlaku. Anda harus mengonfigurasi layar izin OAuth sebelum membuat ID klien Google API.
- Buka halaman Layar izin OAuth di konsol API Google.
- Jika diminta, pilih project yang baru saja Anda buat.
Di halaman "Layar izin OAuth", isi formulir, lalu klik tombol “Simpan”.
Nama aplikasi: Nama aplikasi yang meminta izin. Nama harus mencerminkan aplikasi Anda secara akurat dan konsisten dengan nama aplikasi yang dilihat pengguna di tempat lain. Nama aplikasi akan ditampilkan di layar izin Penautan Akun.
Logo aplikasi: Gambar di layar izin yang akan membantu pengguna mengenali aplikasi Anda. Logo ditampilkan di layar izin Penautan akun dan di setelan akun
Email dukungan: Agar pengguna dapat menghubungi Anda untuk mengajukan pertanyaan tentang izin 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. Secara umum, praktik terbaiknya adalah meminta cakupan secara bertahap, pada saat akses diperlukan, bukan di awal. Pelajari lebih lanjut.
Domain yang diizinkan: Guna melindungi Anda dan pengguna Anda, Google hanya mengizinkan aplikasi yang melakukan autentikasi menggunakan OAuth untuk menggunakan Domain yang Diizinkan. Link aplikasi Anda harus dihosting di Domain yang Diotorisasi. Pelajari lebih lanjut.
Link Halaman Beranda Aplikasi: Halaman beranda untuk aplikasi Anda. Harus dihosting di Domain yang Diotorisasi.
Link Kebijakan Privasi Aplikasi: Ditampilkan di layar izin Penautan Akun Google. Harus dihosting di Domain yang Diotorisasi.
Link Persyaratan Layanan Aplikasi (Opsional): Harus dihosting di Domain yang Diotorisasi.
Gambar 1. Layar Izin Penautan Akun Google untuk Aplikasi fiktif, Tunery
Periksa "Status Verifikasi", jika aplikasi Anda memerlukan verifikasi, klik tombol "Kirim untuk Verifikasi" untuk mengirimkan aplikasi Anda untuk diverifikasi. Lihat persyaratan verifikasi OAuth untuk mengetahui detailnya.
Menerapkan server OAuth
To support the OAuth 2.0 implicit flow, your service makes an authorization endpoint available by HTTPS. This endpoint is responsible for authentication and obtaining consent from users for data access. The authorization endpoint presents a sign-in UI to your users that aren't already signed in and records consent to the requested access.
When a Google application needs to call one of your service's authorized APIs, Google uses this endpoint to get permission from your users to call these APIs on their behalf.
A typical OAuth 2.0 implicit flow session initiated by Google has the following flow:
- Google opens your authorization endpoint in the user's browser. The user signs in, if not signed in already, and grants Google permission to access their data with your API, if they haven't already granted permission.
- Your service creates an access token and returns it to Google. To do so, redirect the user's browser back to Google with the access token attached to the request.
- Google calls your service's APIs and attaches the access token with each request. Your service verifies that the access token grants Google authorization to access the API and then completes the API call.
Handle authorization requests
When a Google application needs to perform account linking via an OAuth 2.0 implicit flow, Google sends the user to your authorization endpoint with a request that includes the following parameters:
| Authorization endpoint parameters | |
|---|---|
client_id |
The client ID you assigned to Google. |
redirect_uri |
The URL to which you send the response to this request. |
state |
A bookkeeping value that is passed back to Google unchanged in the redirect URI. |
response_type |
The type of value to return in the response. For the OAuth 2.0 implicit
flow, the response type is always token. |
user_locale |
The Google Account language setting in RFC5646 format used to localize your content in the user's preferred language. |
For example, if your authorization endpoint is available at
https://myservice.example.com/auth, a request might look like the following:
GET https://myservice.example.com/auth?client_id=GOOGLE_CLIENT_ID&redirect_uri=REDIRECT_URI&state=STATE_STRING&response_type=token&user_locale=LOCALE
For your authorization endpoint to handle sign-in requests, do the following steps:
Verify the
client_idandredirect_urivalues to prevent granting access to unintended or misconfigured client apps:- Confirm that the
client_idmatches the client ID you assigned to Google. - Confirm that the URL specified by the
redirect_uriparameter has the following form:https://oauth-redirect.googleusercontent.com/r/YOUR_PROJECT_ID https://oauth-redirect-sandbox.googleusercontent.com/r/YOUR_PROJECT_ID
- Confirm that the
Check if the user is signed in to your service. If the user isn't signed in, complete your service's sign-in or sign-up flow.
Generate an access token for Google to use to access your API. The access token can be any string value, but it must uniquely represent the user and the client the token is for and must not be guessable.
Send an HTTP response that redirects the user's browser to the URL specified by the
redirect_uriparameter. Include all of the following parameters in the URL fragment:access_token: The access token you just generatedtoken_type: The stringbearerstate: The unmodified state value from the original request
The following is an example of the resulting URL:
https://oauth-redirect.googleusercontent.com/r/YOUR_PROJECT_ID#access_token=ACCESS_TOKEN&token_type=bearer&state=STATE_STRING
Google's OAuth 2.0 redirect handler receives the access token and confirms
that the state value hasn't changed. After Google has obtained an
access token for your service, Google attaches the token to subsequent calls
to your service APIs.
Menangani permintaan info pengguna
Endpoint userinfo adalah resource yang dilindungi OAuth 2.0 yang menampilkan klaim tentang pengguna yang ditautkan. Menerapkan dan menghosting endpoint userinfo bersifat opsional, kecuali untuk kasus penggunaan berikut:
- Login dengan Akun Tertaut dengan Google One Ketuk.
- Langganan tanpa hambatan di Android TV.
Setelah token akses berhasil diambil dari endpoint token Anda, Google akan mengirimkan permintaan ke endpoint userinfo Anda untuk mengambil informasi profil dasar tentang pengguna yang ditautkan.
| header permintaan endpoint userinfo | |
|---|---|
Authorization header |
Token akses jenis Bearer. |
Misalnya, jika endpoint userinfo Anda tersedia di
https://myservice.example.com/userinfo, permintaan mungkin akan terlihat seperti berikut:
GET /userinfo HTTP/1.1 Host: myservice.example.com Authorization: Bearer ACCESS_TOKEN
Agar endpoint userinfo Anda dapat menangani permintaan, lakukan langkah-langkah berikut:
- Ekstrak token akses dari header Otorisasi dan tampilkan informasi untuk pengguna yang terkait dengan token akses.
- Jika token akses tidak valid, tampilkan error HTTP 401 Tidak Sah dengan menggunakan Header Respons
WWW-Authenticate. Berikut adalah contoh respons error userinfo: Jika pesan error 401 Tidak Sah, atau respons error lainnya yang tidak berhasil ditampilkan selama proses penautan, error tersebut tidak akan dapat dipulihkan, token yang diambil akan dihapus dan pengguna harus memulai proses penautan lagi.HTTP/1.1 401 Unauthorized WWW-Authenticate: error="invalid_token", error_description="The Access Token expired"
Jika token akses valid, tampilkan dan respons HTTP 200 dengan objek JSON berikut dalam isi HTTPS respons:
Jika endpoint userinfo Anda menampilkan respons sukses HTTP 200, token dan klaim yang diambil akan didaftarkan terhadap Akun Google pengguna.{ "sub": "USER_UUID", "email": "EMAIL_ADDRESS", "given_name": "FIRST_NAME", "family_name": "LAST_NAME", "name": "FULL_NAME", "picture": "PROFILE_PICTURE", }respons endpoint userinfo subID unik yang mengidentifikasi pengguna di sistem Anda. emailAlamat email pengguna. given_nameOpsional: Nama depan pengguna. family_nameOpsional: Nama belakang pengguna. nameOpsional: Nama lengkap pengguna. pictureOpsional: Foto profil pengguna.
Memvalidasi implementasi
Anda dapat memvalidasi penerapan menggunakan alat OAuth 2.0 Playground.
Di alat ini, lakukan langkah-langkah berikut:
- Klik Configuration untuk membuka jendela OAuth 2.0 Configuration.
- Di kolom OAuth flow, pilih Client-side.
- Di kolom OAuth Endpoints, pilih Custom.
- Tentukan endpoint OAuth 2.0 dan client ID yang Anda tetapkan ke Google di kolom yang sesuai.
- Di bagian Langkah 1, jangan pilih cakupan Google apa pun. Sebagai gantinya, biarkan kolom ini kosong atau ketik cakupan yang valid untuk server Anda (atau string arbitrer jika Anda tidak menggunakan cakupan OAuth). Setelah selesai, klik Otorisasi API.
- Di bagian Langkah 2 dan Langkah 3, ikuti alur OAuth 2.0 dan verifikasi bahwa setiap langkah berfungsi sebagaimana mestinya.
Anda dapat memvalidasi penerapan menggunakan alat Demo Penautan Akun Google.
Di alat tersebut, lakukan langkah-langkah berikut:
- Klik tombol Login dengan Google.
- Pilih akun yang ingin ditautkan.
- Masukkan ID layanan.
- Secara opsional, masukkan satu atau beberapa cakupan yang akan Anda minta aksesnya.
- Klik Mulai Demo.
- Jika diminta, konfirmasi bahwa Anda dapat mengizinkan dan menolak permintaan penautan.
- Pastikan Anda dialihkan ke platform Anda.