Referensi ini menjelaskan metode dan atribut klien JavaScript yang akan Anda gunakan untuk menerapkan Login dengan Google di aplikasi web Anda.
Jika Anda mengalami masalah saat menggunakan library, harap laporkan ke repositori GitHub kami.
Penyiapan Autentikasi
Muat library platform Google API untuk membuat objek gapi
:
<script src="https://apis.google.com/js/platform.js?onload=init" async defer></script>
Setelah library platform dimuat, muat library auth2
:
function init() {
gapi.load('auth2', function() {
/* Ready. Make a call to gapi.auth2.init or some other API */
});
}
gapi.auth2.init(params)
Menginisialisasi objek GoogleAuth
. Anda harus memanggil metode ini sebelum memanggil metode gapi.auth2.GoogleAuth
.
Saat melakukan inisialisasi objek GoogleAuth
, Anda akan mengonfigurasi objek dengan client ID OAuth 2.0 dan opsi tambahan yang ingin Anda tentukan. Kemudian, jika pengguna sudah login, objek GoogleAuth
akan memulihkan status login pengguna dari sesi sebelumnya.
Argumen | |
---|---|
params |
Objek yang berisi key-value pair pada data konfigurasi klien. Lihat gapi.auth2.ClientConfig untuk berbagai properti yang dapat dikonfigurasi. Contoh:
{ client_id: 'CLIENT_ID.apps.googleusercontent.com' } |
Hasil | |
---|---|
gapi.auth2.GoogleAuth |
Objek gapi.auth2.GoogleAuth . Gunakan
metode then() untuk mendapatkan Promise
yang diselesaikan saat objek gapi.auth2.GoogleAuth selesai
diinisialisasi.
|
GoogleAuth.then(onInit, onError)
Memanggil fungsi onInit saat objek GoogleAuth
diinisialisasi sepenuhnya. Jika terjadi error saat melakukan inisialisasi (ini dapat terjadi di browser lama yang tidak didukung), fungsi onError akan dipanggil.
Argumen | |
---|---|
onInit |
Fungsi dipanggil dengan objek GoogleAuth saat sudah diinisialisasi
sepenuhnya.
|
onError |
Fungsi yang dipanggil dengan objek yang berisi properti error ,
jika GoogleAuth gagal diinisialisasi.
|
Hasil | |
---|---|
Promise | Promise yang terpenuhi saat fungsi onInit selesai, atau ditolak jika error inisialisasi terjadi. Fungsi ini akan diperbaiki dengan nilai yang ditampilkan dari fungsi onInit, jika ada. |
Kode Error
idpiframe_initialization_failed
-
Gagal melakukan inisialisasi iframe yang diperlukan dari Google, misalnya karena lingkungan
yang tidak didukung. Properti
details
akan memberikan informasi lebih lanjut tentang error yang terjadi.
API gapi.auth2.
Antarmuka yang merepresentasikan parameter konfigurasi yang berbeda untuk metode
gapi.auth2.init
.
Parameter | ||
---|---|---|
client_id |
string |
Wajib. Client ID aplikasi yang ditemukan dan dibuat di Google Developers Console. |
cookie_policy |
string |
Domain yang akan dibuatkan cookie loginnya. URI,
single_host_origin , atau none . Jika tidak ditentukan, setelan defaultnya adalah single_host_origin . |
scope |
string |
Cakupan yang diminta, sebagai string yang dipisahkan spasi. Opsional jika fetch_basic_profile tidak ditetapkan ke false. |
fetch_basic_profile |
boolean |
Mengambil informasi profil dasar pengguna saat mereka login. Menambahkan 'profile', 'email', dan 'openid' ke cakupan yang diminta. True jika tidak ditentukan. |
hosted_domain |
string |
Domain G Suite yang harus dimiliki pengguna untuk login. Hal ini rentan terhadap modifikasi oleh klien, jadi pastikan untuk memverifikasi properti domain yang dihosting dari pengguna yang ditampilkan. Gunakan
GoogleUser.getHostedDomain() pada
klien, dan klaim hd di Token ID pada
server untuk memverifikasi domain sesuai yang diharapkan.
|
ux_mode |
string |
Mode UX yang digunakan untuk alur login. Secara default, tindakan ini akan membuka alur izin
di pop-up. Nilai yang valid adalah popup dan redirect . |
redirect_uri |
string |
Jika menggunakan ux_mode='redirect' , parameter ini memungkinkan Anda mengganti
redirect_uri default yang akan digunakan pada akhir alur izin. redirect_uri default adalah URL saat ini yang dihilangkan dari parameter kueri dan fragmen hash.
|
plugin_name |
string |
Opsional. Jika nilai ini ditetapkan, Client ID baru yang dibuat sebelum 29 Juli 2022 dapat menggunakan Library Google Platform yang lebih lama.
Secara default, Client ID yang baru dibuat kini diblokir agar tidak menggunakan Library Platform, dan sebagai gantinya harus menggunakan library Layanan Identitas Google yang lebih baru. Anda dapat memilih nilai apa pun, dan nama deskriptif seperti
nama produk atau plugin direkomendasikan untuk memudahkan identifikasi.
Contoh: plugin_name: 'YOUR_STRING_HERE'
|
Autentikasi
GoogleAuth
adalah class singleton yang menyediakan metode untuk mengizinkan pengguna login dengan akun Google, mendapatkan status login pengguna saat ini, mendapatkan data tertentu dari profil Google pengguna, meminta cakupan tambahan, dan logout dari akun saat ini.
gapi.auth2.getAuthInstance()
Menampilkan objek GoogleAuth
. Anda harus menginisialisasi objek GoogleAuth
dengan gapi.auth2.init()
sebelum memanggil metode ini.
Hasil | |
---|---|
gapi.auth2.GoogleAuth |
Objek gapi.auth2.GoogleAuth . Gunakan objek ini untuk memanggil metode gapi.auth2.GoogleAuth .
|
GoogleAuth.isSignedIn.get()
Menampilkan apakah pengguna saat ini sedang login.
Hasil | |
---|---|
Boolean |
true jika pengguna login, atau false jika pengguna logout atau objek GoogleAuth tidak diinisialisasi.
|
GoogleAuth.isSignedIn.listen(pemroses)
Mendeteksi perubahan pada status login pengguna saat ini.
Argumen | |
---|---|
listener |
Fungsi yang mengambil nilai boolean. listen() meneruskan true ke fungsi ini saat pengguna login, dan false saat pengguna logout.
|
GoogleAuth.signIn()
Memproses login pengguna dengan opsi yang ditentukan untuk gapi.auth2.init()
.
Hasil | |
---|---|
Promise | Promise yang terpenuhi dengan instance GoogleUser saat pengguna berhasil mengautentikasi dan memberikan cakupan yang diminta, atau ditolak dengan objek yang berisi properti error jika terjadi error (lihat di bawah ini untuk kode kesalahan). |
Kode error
Lihat GoogleAuth.signIn(options)
.
GoogleAuth.signIn(options)
Membuat pengguna login menggunakan opsi yang ditentukan.
Argumen | |
---|---|
options |
Salah satu dari:
|
Hasil | |
---|---|
Promise | Promise yang terpenuhi dengan instance GoogleUser saat pengguna berhasil mengautentikasi dan memberikan cakupan yang diminta, atau ditolak dengan objek yang berisi properti error jika terjadi error (lihat di bawah ini untuk kode kesalahan). |
Kode error
popup_closed_by_user
- Pengguna menutup pop-up sebelum menyelesaikan alur login.
access_denied
- Pengguna menolak izin untuk cakupan yang diperlukan.
immediate_failed
-
Tidak ada pengguna yang dapat dipilih secara otomatis tanpa meminta alur izin. Error muncul saat
menggunakan
signIn
dengan opsiprompt: 'none'
. Opsi ini seharusnya tidak perlu digunakan, karenagapi.auth2.init
akan otomatis membuat pengguna login jika sebelumnya login selama sesi sebelumnya.
gapi.auth2.SignInOptions
Antarmuka yang merepresentasikan parameter konfigurasi yang berbeda untuk metode GoogleAuth.signIn(options)
.
Parameter | ||
---|---|---|
prompt |
string |
Memaksakan mode tertentu untuk alur izin. Opsional. Nilai yang memungkinkan adalah:
|
scope |
string |
Cakupan yang diminta, sebagai string yang dipisahkan spasi, di atas cakupan yang ditentukan dalam
parameter gapi.auth2.init . Opsional jika fetch_basic_profile tidak ditetapkan ke salah.
|
ux_mode |
string |
Mode UX yang digunakan untuk alur login. Secara default, tindakan ini akan membuka alur izin
di pop-up. Nilai yang valid adalah popup dan redirect . |
redirect_uri |
string |
Jika menggunakan ux_mode='redirect' , parameter ini memungkinkan Anda mengganti
redirect_uri default yang akan digunakan pada akhir alur
izin. redirect_uri default adalah URL saat ini yang dihilangkan dari parameter kueri dan fragmen hash.
|
GoogleAuth.signOut()
Membuat akun saat ini logout dari aplikasi.
Hasil | |
---|---|
Promise | Promise yang dipenuhi saat pengguna telah logout. |
GoogleAuth.disconnect()
Mencabut semua cakupan yang diberikan pengguna.
GoogleAuth.grantOfflineAccess(options)
Mendapatkan izin dari pengguna untuk mengakses cakupan yang ditentukan secara offline.
Argumen | |
---|---|
options |
Objek gapi.auth2.OfflineAccessOptions
yang berisi key-value pair parameter. Contoh: { scope: 'profile email' } |
Hasil | |
---|---|
Promise | Promise yang terpenuhi saat pengguna memberikan cakupan yang diminta, meneruskan objek yang berisi kode otorisasi ke pengendali fulfillment Promise .
Contoh: auth2.grantOfflineAccess().then(function(resp) { var auth_code = resp.code; }); |
Kode error
popup_closed_by_user
- Pengguna menutup pop-up sebelum menyelesaikan alur izin.
access_denied
- Pengguna menolak izin untuk cakupan yang diperlukan.
immediate_failed
-
Tidak ada pengguna yang dapat dipilih secara otomatis tanpa meminta alur izin. Error muncul saat
menggunakan
signIn
dengan opsiprompt: 'none'
. Opsi ini seharusnya tidak perlu digunakan, karenagapi.auth2.init
akan otomatis membuat pengguna login jika sebelumnya login selama sesi sebelumnya.
gapi.auth2.OfflineAccessOptions
Antarmuka yang merepresentasikan parameter konfigurasi yang berbeda untuk metode
GoogleAuth.grantOfflineAccess(options)
.
Parameter | ||
---|---|---|
prompt |
string |
Memaksakan mode tertentu untuk alur izin. Opsional. Nilai yang memungkinkan adalah:
|
scope |
string |
Cakupan yang diminta, sebagai string yang dipisahkan spasi, di atas cakupan yang ditentukan dalam
parameter gapi.auth2.init . Opsional jika fetch_basic_profile tidak ditetapkan ke salah.
|
GoogleAuth.AttachClickHandler(container, options, onsuccess, onfailure)
Melampirkan alur login ke pengendali klik container yang ditentukan.
Argumen | |
---|---|
container | ID, atau referensi ke, elemen div yang
akan digunakan untuk menambahkan pengendali klik. |
options | Objek yang berisi key-value pair parameter. Lihat GoogleAuth.signIn(). |
onsuccess | Fungsi yang akan dipanggil setelah login selesai. |
onfailure | Fungsi yang akan dipanggil jika login gagal. |
Pengguna
Objek GoogleUser
mewakili satu akun pengguna.
Objek GoogleUser
biasanya diperoleh dengan memanggil
GoogleAuth.currentUser.get().
GoogleAuth.currentUser.get()
Menampilkan objek GoogleUser
yang merepresentasikan pengguna saat ini. Perhatikan bahwa pada instance GoogleAuth
yang baru diinisialisasi, pengguna saat ini belum ditetapkan. Gunakan
metode currentUser.listen()
atau GoogleAuth.then()
untuk mendapatkan instance GoogleAuth
yang diinisialisasi.
Hasil | |
---|---|
GoogleUser |
Pengguna aktif |
GoogleAuth.currentUser.listen(listener)
Memproses perubahan pada currentUser.
Argumen | |
---|---|
listener |
Fungsi yang menggunakan parameter GoogleUser .
listen meneruskan fungsi GoogleUser ke instance
ini pada setiap perubahan yang mengubah currentUser .
|
GoogleUser.getId()
Dapatkan string ID unik pengguna.
Hasil | |
---|---|
String | ID unik pengguna |
GoogleUser.isSignedIn()
Menampilkan true jika pengguna login.
Hasil | |
---|---|
Boolean | True jika pengguna login |
GoogleUser.getHostedDomain()
Dapatkan domain G Suite pengguna jika pengguna login dengan akun G Suite.
Hasil | |
---|---|
String | Domain G Suite pengguna |
GoogleUser.getGrantedScopes()
Mendapatkan cakupan yang diberikan pengguna sebagai string yang dipisahkan spasi.
Hasil | |
---|---|
String | Cakupan yang diberikan oleh pengguna |
GoogleUser.getBasicProfile()
Dapatkan informasi profil dasar pengguna.
Hasil | |
---|---|
gapi.auth2.BasicProfile |
Anda dapat mengambil properti gapi.auth2.BasicProfile
dengan metode berikut:
|
GoogleUser.getAuthResponse(termasukOtorisasiData)
Dapatkan objek respons dari sesi autentikasi pengguna.
Argumen | |
---|---|
includeAuthorizationData | Opsional: Boolean yang menentukan apakah akan selalu menampilkan token akses dan cakupan. Secara default, token akses dan cakupan yang diminta tidak ditampilkan saat
fetch_basic_profile benar (nilai default) dan tidak ada cakupan tambahan
yang diminta. |
Hasil | |
---|---|
gapi.auth2.AuthResponse |
Objek gapi.auth2.AuthResponse . |
GoogleUser.reloadAuthResponse()
Memaksa pembaruan token akses, lalu menampilkan Promise untuk AuthResponse baru.
Hasil | |
---|---|
Promise |
Promise yang diisi dengan
gapi.auth2.AuthResponse yang dimuat ulang saat pemuatan ulang
token OAuth selesai.
|
gapi.auth2.AuthResponse
Respons yang ditampilkan saat memanggil
metode
GoogleUser.getAuthResponse(includeAuthorizationData)
atau
GoogleUser.reloadAuthResponse()
.
Properti | ||
---|---|---|
access_token |
string |
Token Akses diberikan. |
id_token |
string |
Token ID diberikan. |
scope |
string |
Cakupan yang diberikan dalam Token Akses. |
expires_in |
number |
Jumlah detik hingga Token Akses berakhir. |
first_issued_at |
number |
Stempel waktu saat pengguna pertama kali memberikan cakupan yang diminta. |
expires_at |
number |
Stempel waktu saat Token Akses akan berakhir masa berlakunya. |
GoogleUser.hasGrantedScopes(scopes)
Menampilkan true jika pengguna memberikan cakupan yang ditentukan.
Argumen | |
---|---|
scopes | String cakupan yang dipisahkan spasi. |
Hasil | |
---|---|
Boolean | True jika cakupan diberikan |
GoogleUser.grant(options)
Meminta cakupan tambahan kepada pengguna.
Lihat GoogleAuth.signIn()
untuk daftar parameter dan kode error.
GoogleUser.grantOfflineAccess(options)
Mendapatkan izin dari pengguna untuk mengakses cakupan yang ditentukan secara offline.
Argumen | |
---|---|
options |
Objek gapi.auth2.OfflineAccessOptions
yang berisi key-value pair parameter. Contoh: { scope: 'profile email' } |
GoogleUser.disconnect()
Mencabut semua cakupan yang diberikan pengguna untuk aplikasi.
Elemen UI
gapi.signin2.render(id, options)
Merender tombol login dalam elemen dengan ID yang diberikan, menggunakan setelan yang ditentukan oleh objek options.
Argumen | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
id | ID elemen untuk merender tombol login. | ||||||||||||||||
options |
Objek yang berisi setelan yang akan digunakan untuk merender tombol. Misalnya:
{ scope: 'email', width: 200, height: 50, longtitle: true, theme: 'dark', onsuccess: handleSuccess, onfailure: handleFailure }Anda dapat menentukan opsi berikut:
|
Lanjutan
gapi.auth2.authorize(params; callback)
Melakukan otorisasi OAuth 2.0 satu kali. Bergantung pada parameter yang digunakan, tindakan ini akan membuka jendela pop-up ke alur login Google atau mencoba memuat respons yang diminta tanpa suara, tanpa interaksi pengguna.
Beberapa kasus penggunaan di mana metode ini berguna, antara lain:
- Aplikasi Anda hanya perlu meminta endpoint Google API satu kali, misalnya untuk memuat video YouTube favorit pengguna saat pertama kali login.
- Aplikasi Anda memiliki infrastruktur pengelolaan sesi sendiri, dan hanya memerlukan Token ID sekali untuk mengidentifikasi pengguna di backend Anda.
- Beberapa ID Klien digunakan dalam halaman yang sama.
Argumen | |
---|---|
params |
Objek yang berisi key-value pair data konfigurasi. Lihat
gapi.auth2.AuthorizeConfig untuk
berbagai properti yang dapat dikonfigurasi. Contoh:
{ client_id: 'CLIENT_ID.apps.googleusercontent.com', scope: 'email profile openid', response_type: 'id_token permission' } |
callback |
Fungsi yang dipanggil dengan objek gapi.auth2.AuthorizeResponse setelah permintaan selesai (baik berhasil atau gagal).
|
Contoh
gapi.auth2.authorize({
client_id: 'CLIENT_ID.apps.googleusercontent.com',
scope: 'email profile openid',
response_type: 'id_token permission'
}, function(response) {
if (response.error) {
// An error happened!
return;
}
// The user authorized the application for the scopes requested.
var accessToken = response.access_token;
var idToken = response.id_token;
// You can also now use gapi.client to perform authenticated requests.
});
Kode error
idpiframe_initialization_failed
-
Gagal melakukan inisialisasi iframe yang diperlukan dari Google, misalnya karena lingkungan
yang tidak didukung. Properti
details
akan memberikan informasi lebih lanjut tentang error yang terjadi. popup_closed_by_user
- Pengguna menutup pop-up sebelum menyelesaikan alur login.
access_denied
- Pengguna menolak izin untuk cakupan yang diperlukan.
immediate_failed
-
Tidak ada pengguna yang dapat dipilih secara otomatis tanpa meminta alur izin. Error muncul saat
menggunakan
signIn
dengan opsiprompt: 'none'
.
gapi.auth2.AuthorizeConfig
Antarmuka yang merepresentasikan parameter konfigurasi yang berbeda untuk metode gapi.auth2.authorize
.
Properti | ||
---|---|---|
client_id |
string |
Required. Client ID aplikasi yang ditemukan dan dibuat di Google Developers Console. |
scope |
string |
Required. Cakupan yang diminta, sebagai string yang dipisahkan spasi. |
response_type |
string |
Daftar jenis respons yang dipisahkan spasi. Default-nya adalah 'permission' . Kemungkinan nilainya adalah:
|
prompt |
string |
Memaksakan mode tertentu untuk alur izin. Kemungkinan nilainya adalah:
|
cookie_policy |
string |
Domain yang akan dibuatkan cookie loginnya. URI,
single_host_origin , atau none . Jika tidak ditentukan, setelan defaultnya adalah single_host_origin .
|
hosted_domain |
string |
Domain G Suite yang harus dimiliki pengguna untuk login. Hal ini rentan terhadap modifikasi oleh klien, jadi pastikan untuk memverifikasi properti domain yang dihosting dari pengguna yang ditampilkan. |
login_hint |
string |
Email atau ID Pengguna dari pengguna yang telah dipilih sebelumnya di alur login. Ini rentan terhadap
modifikasi oleh pengguna, kecuali jika prompt: "none" digunakan.
|
include_granted_scopes |
boolean |
Apakah meminta Token Akses yang mencakup semua cakupan yang sebelumnya diberikan oleh pengguna ke aplikasi, atau hanya cakupan yang diminta dalam panggilan saat ini. Default-nya adalah true .
|
plugin_name |
string |
Opsional. Jika ditetapkan, Client ID yang dibuat sebelum 29 Juli 2022 dapat menggunakan
Library Google Platform. Secara default, Client ID yang baru dibuat diblokir agar tidak menggunakan Library Platform, dan sebagai gantinya harus menggunakan library Layanan Identitas Google yang lebih baru. Anda dapat memilih nilai apa pun, dan nama deskriptif
seperti nama produk atau plugin direkomendasikan untuk memudahkan identifikasi.
Contoh: plugin_name: 'YOUR_STRING_HERE'
|
gapi.auth2.AuthorizeResponse
Respons yang ditampilkan ke callback
metode gapi.auth2.authorize
.
Properti | ||
---|---|---|
access_token |
string |
Token Akses diberikan. Hanya ada jika permission atau token
ditentukan dalam response_type .
|
id_token |
string |
Token ID diberikan. Hanya ada jika id_token ditentukan dalam response_type .
|
code |
string |
Kode Otorisasi yang diberikan. Hanya ada jika code ditentukan dalam response_type .
|
scope |
string |
Cakupan yang diberikan dalam Token Akses. Hanya ada jika permission atau token ditentukan dalam response_type .
|
expires_in |
number |
Jumlah detik hingga Token Akses berakhir. Hanya ada jika permission atau token ditentukan dalam response_type .
|
first_issued_at |
number |
Stempel waktu saat pengguna pertama kali memberikan cakupan yang diminta. Hanya ada jika
permission atau token ditentukan dalam response_type .
|
expires_at |
number |
Stempel waktu saat Token Akses akan berakhir masa berlakunya. Hanya ada jika permission atau token ditentukan dalam response_type .
|
error |
string |
Jika permintaan gagal, pesan ini akan berisi kode error. |
error_subtype |
string |
Jika permintaan gagal, pesan ini dapat berisi informasi tambahan ke kode error yang juga ditampilkan. |