Penautan Akun Google memungkinkan pemegang Akun Google terhubung dengan cepat, lancar, dan aman ke layanan Anda serta membagikan data kepada Google.
Login dengan Akun Tertaut memungkinkan Login Sekali Ketuk dengan Google bagi pengguna yang sudah menautkan Akun Google mereka ke layanan Anda. Hal ini meningkatkan pengalaman pengguna karena mereka dapat login dengan sekali klik, tanpa memasukkan ulang nama pengguna dan sandi mereka. Hal ini juga mengurangi kemungkinan pengguna membuat akun duplikat di layanan Anda.
Persyaratan
Untuk menerapkan Login dengan Akun Tertaut, Anda harus memenuhi persyaratan berikut:
- Anda memiliki penerapan Penautan OAuth Akun Google yang mendukung alur kode otorisasi OAuth 2.0. Implementasi OAuth Anda harus menyertakan endpoint berikut:
- endpoint otorisasi untuk menangani permintaan otorisasi.
- Endpoint token untuk menangani permintaan token akses dan refresh.
- Endpoint userinfo untuk mengambil informasi akun dasar tentang pengguna tertaut yang ditampilkan kepada pengguna selama proses Login Akun Tertaut.
- Anda memiliki aplikasi Android.
Cara kerjanya
Prasyarat : Pengguna sebelumnya telah menautkan Akun Google-nya dengan akunnya di layanan Anda.
- Anda memilih untuk menampilkan akun tertaut selama alur Login dengan Satu Ketukan.
- Pengguna akan melihat perintah Login Sekali Ketuk dengan opsi untuk login ke layanan Anda dengan akun tertaut mereka.
- Jika pengguna memilih untuk melanjutkan dengan akun tertaut, Google akan mengirimkan permintaan ke endpoint token Anda untuk menyimpan kode otorisasi. Permintaan ini berisi token akses pengguna yang diterbitkan oleh layanan Anda dan kode otorisasi Google.
- Anda menukarkan kode otorisasi Google dengan token ID Google yang berisi informasi tentang Akun Google pengguna.
- Aplikasi Anda juga menerima token ID saat alur selesai dan Anda mencocokkannya dengan ID pengguna dalam token ID yang diterima oleh server untuk memproses login pengguna ke aplikasi Anda.
![Login Akun Tertaut.](https://developer.android.google.cn/static/identity/legacy/one-tap/images/linked-account-signin.png?hl=id)
Menerapkan Login Akun Tertaut di aplikasi Android Anda
Untuk mendukung Login dengan Akun Tertaut di aplikasi Android, ikuti petunjuk dalam panduan penerapan Android.
Menangani permintaan kode otorisasi dari Google
Google membuat permintaan POST ke endpoint token Anda untuk menyimpan kode otorisasi yang Anda tukar dengan token ID pengguna. Permintaan ini berisi token akses pengguna dan kode otorisasi OAuth2 yang dikeluarkan Google.
Sebelum menyimpan kode otorisasi, Anda harus memverifikasi token akses yang diberikan oleh Anda kepada Google, yang diidentifikasi oleh client_id
.
Permintaan HTTP
Contoh permintaan
POST /token HTTP/1.1
Host: server.example.com
Content-Type: application/x-www-form-urlencoded
code=GOOGLE_AUTHORIZATION_CODE
&grant_type=urn:ietf:params:oauth:grant-type:reciprocal
&client_id=CLIENT_ID
&client_secret=CLIENT_SECRET
&access_token=ACCESS_TOKEN
Endpoint pertukaran token Anda harus dapat menangani parameter permintaan berikut:
Parameter endpoint token | |
---|---|
code |
Kode otorisasi Google OAuth2 Wajib |
client_id |
Wajib Client ID yang Anda berikan kepada Google |
client_secret |
Wajib Rahasia klien yang Anda berikan kepada Google |
access_token |
Wajib Token akses yang Anda berikan kepada Google. Anda akan menggunakannya untuk mendapatkan konteks pengguna |
grant_type |
Nilai Wajib HARUS ditetapkan ke urn:ietf:params:oauth:grant-type:reciprocal |
Endpoint pertukaran token Anda harus merespons permintaan POST dengan melakukan hal berikut:
- Verifikasi bahwa
access_token
diberikan kepada Google yang diidentifikasi olehclient_id
. - Respons dengan respons HTTP 200 (OK) jika permintaan valid dan kode autentikasi berhasil ditukar dengan token ID Google, atau kode error HTTP jika permintaan tidak valid.
Respons HTTP
Berhasil
Menampilkan kode status HTTP 200 OK
Contoh respons berhasil
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
Pragma: no-cache
{}
Error
Jika terjadi permintaan HTTP yang tidak valid, respons dengan salah satu kode error HTTP berikut:
Kode Status HTTP | Isi | Deskripsi |
---|---|---|
400 | {"error": "invalid_request"} |
Permintaan tidak memiliki parameter sehingga server tidak dapat melanjutkan permintaan. Hal ini juga dapat ditampilkan jika permintaan menyertakan parameter yang tidak didukung atau mengulangi parameter |
401 | {"error": "invalid_request"} |
Autentikasi klien gagal, seperti jika permintaan berisi client ID atau secret yang tidak valid |
401 | {"error": "invalid_token"}
Sertakan tantangan autentikasi "WWW-Authentication: Bearer" di header respons |
Token akses partner tidak valid. |
403 | {"error": "insufficient_permission"}
Menyertakan tantangan autentikasi "WWW-Authentication: Bearer" di header respons |
Token akses partner tidak berisi cakupan yang diperlukan untuk melakukan OAuth Resiprokal |
500 | {"error": "internal_error"} |
Error server |
Respons error harus berisi kolom berikut :
Kolom respons error | |
---|---|
error |
String error Wajib |
error_description |
Deskripsi error yang dapat dibaca manusia |
error_uri |
URI yang memberikan detail selengkapnya tentang error |
Contoh respons error 400
HTTP/1.1 400 Bad Request
Content-Type: application/json;charset=UTF-8
Cache-Control: no-store
Pragma: no-cache
{
"error": "invalid_request",
"error_description": "Request was missing the 'access_token' parameter."
}
Menukar kode otorisasi untuk token ID
Anda harus menukarkan kode otorisasi yang diterima dengan token ID Google yang berisi informasi tentang akun Google pengguna.
Untuk menukarkan kode otorisasi dengan token ID Google, panggil endpoint https://oauth2.googleapis.com/token
dan tetapkan parameter berikut:
Kolom permintaan | |
---|---|
client_id |
Wajib Client ID yang diperoleh dari halaman Kredensial Konsol API. Ini biasanya akan berupa kredensial dengan nama Aplikasi Actions on Google Baru |
client_secret |
Wajib Rahasia klien yang diperoleh dari halaman Kredensial Konsol API |
code |
Wajib Kode otorisasi yang dikirim dalam permintaan awal |
grant_type |
Wajib Seperti yang ditentukan dalam spesifikasi OAuth 2.0, nilai kolom ini harus ditetapkan ke authorization_code . |
Contoh permintaan
POST /oauth2/v4/token HTTP/1.1
Host: www.googleapis.com
Content-Type: application/x-www-form-urlencoded
code=GOOGLE_AUTHORIZATION_CODE
&grant_type=authorization_code
&client_id=GOOGLE_CLIENT_ID
&client_secret=GOOGLE_CLIENT_SECRET
Google merespons permintaan ini dengan menampilkan objek JSON yang berisi token akses berumur pendek dan token refresh.
Respons berisi kolom berikut:
Kolom respons | |
---|---|
access_token |
Token akses yang diterbitkan Google yang dikirimkan aplikasi Anda untuk memberikan otorisasi pada permintaan Google API |
id_token |
Token ID berisi informasi Akun Google pengguna. Bagian Validasi Respons berisi detail tentang cara mendekode dan memvalidasi respons token ID |
expires_in |
Masa berlaku token akses yang tersisa dalam detik |
refresh_token |
Token yang dapat Anda gunakan untuk mendapatkan token akses baru. Token refresh berlaku hingga pengguna mencabut akses |
scope |
Nilai kolom ini selalu ditetapkan ke openid untuk kasus penggunaan Login dengan Akun Tertaut |
token_type |
Jenis token yang ditampilkan. Saat ini, nilai kolom ini selalu ditetapkan ke Bearer |
Contoh respons
HTTP/1.1 200 OK
Content-type: application/json; charset=utf-8
{
"access_token": "Google-access-token",
"id_token": "Google-ID-token",
"expires_in": 3599,
"token_type": "Bearer",
"scope": "openid",
"refresh_token": "Google-refresh-token"
}
POST /oauth2/v4/token HTTP/1.1
Host: www.googleapis.com
Content-Type: application/x-www-form-urlencoded
code=Google authorization code
&grant_type=authorization_code
&client_id=Google client id
&client_secret=Google client secret