Referensi ini menjelaskan metode dan atribut klien JavaScript yang akan Anda gunakan untuk menerapkan Login dengan Google di aplikasi web.
Jika Anda mengalami masalah saat menggunakan library, laporkan ke repositori GitHub kami. .
Penyiapan Auth
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)
Melakukan inisialisasi objek GoogleAuth
. Anda harus memanggil metode ini sebelum memanggil
metode gapi.auth2.GoogleAuth
.
Saat menginisialisasi objek GoogleAuth
, Anda 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 data konfigurasi klien. Lihat
gapi.auth2.ClientConfig untuk berbagai
properti yang dapat dikonfigurasi. Misalnya:
{ 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 melakukan inisialisasi.
|
GoogleAuth.then(onInit, onError)
Memanggil fungsi onInit saat objek GoogleAuth
diinisialisasi sepenuhnya. Jika error muncul saat melakukan inisialisasi (hal ini dapat terjadi di browser lama yang tidak didukung), fungsi onError akan dipanggil.
Argumen | |
---|---|
onInit |
Fungsi yang dipanggil dengan objek GoogleAuth saat diinisialisasi sepenuhnya.
|
onError |
Fungsi yang dipanggil dengan objek yang berisi properti error ,
jika GoogleAuth gagal diinisialisasi.
|
Hasil | |
---|---|
Promise | Promise yang terpenuhi saat fungsi onInit
telah selesai, atau ditolak jika error inisialisasi muncul. Fungsi ini diselesaikan dengan nilai yang ditampilkan dari fungsi onInit, jika ada. |
Kode Error
idpiframe_initialization_failed
-
Gagal menginisialisasi iframe yang diperlukan dari Google, misalnya, karena lingkungan
tidak didukung. Properti
details
akan memberikan informasi selengkapnya tentang error yang ditampilkan.
gapi.auth2.ClientConfig
Antarmuka yang mewakili berbagai parameter konfigurasi untuk
metode gapi.auth2.init
.
Parameter | ||
---|---|---|
client_id |
string |
Wajib. Client ID aplikasi, yang ditemukan dan dibuat di Konsol Google API. |
cookie_policy |
string |
Domain yang akan digunakan untuk membuat cookie login. URI,
single_host_origin , atau none . Setelan defaultnya adalah
single_host_origin jika tidak ditentukan. |
scope |
string |
Cakupan yang akan diminta, sebagai string yang dipisahkan spasi. Opsional jika
fetch_basic_profile tidak disetel ke salah (false). |
fetch_basic_profile |
boolean |
Mengambil informasi profil dasar pengguna saat mereka login. Menambahkan 'profile', 'email', dan 'openid' ke cakupan yang diminta. Benar jika tidak ditentukan. |
hosted_domain |
string |
Domain G Suite tempat pengguna harus tergabung untuk login. Hal ini
rentan terhadap perubahan oleh klien, jadi pastikan untuk memverifikasi
properti domain yang dihosting dari pengguna yang ditampilkan. Gunakan
GoogleUser.getHostedDomain() di
klien, dan klaim hd di Token ID di
server untuk memverifikasi domain yang Anda harapkan.
|
use_fedcm |
boolean |
Opsional, default ke True . Aktifkan atau nonaktifkan penggunaan
API FedCM browser selama login. |
ux_mode |
string |
Mode UX yang akan 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 di akhir alur izin. redirect_uri default adalah URL saat ini yang dihapus parameter kueri dan fragmen hash.
|
enable_granular_consent |
boolean |
Opsional. Apakah akan mengaktifkan
izin
terperinci. Jika ditetapkan ke false , izin Akun Google yang lebih terperinci akan dinonaktifkan untuk client ID OAuth yang dibuat sebelum tahun 2019. Tidak berpengaruh pada Client ID OAuth yang dibuat selama atau setelah tahun 2019, karena izin yang lebih terperinci selalu diaktifkan untuk client ID tersebut.
|
plugin_name |
string |
Opsional. Jika nilai ini ditetapkan, Client ID baru yang dibuat sebelum
29 Juli 2022 dapat menggunakan Library Google Platform lama.
Secara default, Client ID yang baru dibuat kini diblokir agar tidak menggunakan
Library Platform dan sebagai gantinya harus menggunakan library Google Identity
Services yang lebih baru. Anda dapat memilih nilai apa pun, nama deskriptif seperti
nama produk atau plugin direkomendasikan untuk identifikasi.
Contoh: plugin_name: 'YOUR_STRING_HERE'
|
Autentikasi
GoogleAuth
adalah class singleton yang menyediakan metode untuk memungkinkan 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 login.
Hasil | |
---|---|
Boolean |
true jika pengguna login, atau false jika
pengguna logout atau objek GoogleAuth tidak
diinisialisasi.
|
GoogleAuth.isSignedIn.listen(listener)
Memproses perubahan pada status login pengguna saat ini.
Argumen | |
---|---|
listener |
Fungsi yang menggunakan 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 ke gapi.auth2.init()
.
Hasil | |
---|---|
Promise | Promise yang dipenuhi dengan instance GoogleUser saat
pengguna berhasil mengautentikasi dan memberikan cakupan yang diminta, atau ditolak dengan objek
yang berisi properti error jika terjadi error. Lihat
bagian berikutnya untuk mengetahui kode error. |
Kode error
Lihat GoogleAuth.signIn(options)
.
GoogleAuth.signIn(options)
Memproses login pengguna menggunakan opsi yang ditentukan.
Argumen | |
---|---|
options |
Atau:
|
Hasil | |
---|---|
Promise | Promise yang dipenuhi dengan instance GoogleUser saat
pengguna berhasil mengautentikasi dan memberikan cakupan yang diminta, atau ditolak dengan objek
yang berisi properti error jika terjadi error (lihat kode error di bawah). |
Kode error
popup_closed_by_user
- Pengguna menutup pop-up sebelum menyelesaikan alur login.
access_denied
- Pengguna menolak izin ke 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 tidak boleh diperlukan untuk digunakan, karenagapi.auth2.init
akan otomatis memproses login pengguna jika sebelumnya login selama sesi sebelumnya.
gapi.auth2.SignInOptions
Antarmuka yang mewakili berbagai parameter konfigurasi untuk
metode GoogleAuth.signIn(options)
.
Parameter | ||
---|---|---|
prompt |
string |
Memaksa mode tertentu untuk alur izin. Opsional. Nilai yang mungkin adalah:
|
scope |
string |
Cakupan yang akan diminta, sebagai string yang dipisahkan spasi, di atas cakupan yang ditentukan dalam
param gapi.auth2.init . Opsional jika fetch_basic_profile tidak ditetapkan
ke salah (false).
|
ux_mode |
string |
Mode UX yang akan 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 di akhir alur izin. redirect_uri default adalah URL saat ini yang dihapus parameter kueri dan fragmen hash.
|
GoogleAuth.signOut()
Logout akun saat ini dari aplikasi.
Hasil | |
---|---|
Promise | Promise yang dipenuhi saat pengguna telah logout. |
GoogleAuth.disconnect()
Membatalkan 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 pasangan nilai kunci parameter. Misalnya: { scope: 'profile email' } |
Hasil | |
---|---|
Promise | Promise yang dipenuhi saat pengguna memberikan cakupan yang diminta, dengan meneruskan objek yang berisi kode otorisasi ke pengendali fulfillment Promise .
Misalnya: 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 ke 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 tidak boleh digunakan, karenagapi.auth2.init
akan otomatis memproses login pengguna jika sebelumnya login selama sesi sebelumnya.
gapi.auth2.OfflineAccessOptions
Antarmuka yang mewakili berbagai parameter konfigurasi untuk
metode
GoogleAuth.grantOfflineAccess(options)
.
Parameter | ||
---|---|---|
prompt |
string |
Memaksa mode tertentu untuk alur izin. Opsional. Nilai yang mungkin adalah:
|
scope |
string |
Cakupan yang akan diminta, sebagai string yang dipisahkan spasi, di atas cakupan yang ditentukan dalam
param gapi.auth2.init . Opsional jika fetch_basic_profile tidak ditetapkan
ke salah (false).
|
GoogleAuth.attachClickHandler(container, options, onsuccess, onfailure)
Melampirkan alur login ke pengendali klik penampung yang ditentukan.
Argumen | |
---|---|
container | ID, atau referensi ke, elemen div yang akan
dilampirkan pengendali klik. |
options | Objek yang berisi pasangan nilai kunci 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 mewakili pengguna saat ini. Perhatikan bahwa dalam 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 saat ini |
GoogleAuth.currentUser.listen(listener)
Memproses perubahan di currentUser.
Argumen | |
---|---|
listener |
Fungsi yang menggunakan parameter GoogleUser .
listen meneruskan instance GoogleUser
ke fungsi ini pada setiap perubahan yang mengubah currentUser .
|
GoogleUser.getId()
Mendapatkan string ID unik pengguna.
Hasil | |
---|---|
String | ID unik pengguna |
GoogleUser.isSignedIn()
Menampilkan benar jika pengguna login.
Hasil | |
---|---|
Boolean | Benar jika pengguna login |
GoogleUser.getHostedDomain()
Mendapatkan domain G Suite pengguna jika pengguna login dengan akun G Suite.
Hasil | |
---|---|
String | Domain G Suite pengguna |
GoogleUser.getGrantedScopes()
Dapatkan 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(includeAuthorizationData)
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 jika
fetch_basic_profile bernilai 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 dipenuhi dengan gapi.auth2.AuthResponse yang dimuat ulang
saat memuat 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 masa berlaku Token Akses berakhir. |
first_issued_at |
number |
Stempel waktu saat pengguna pertama kali memberikan cakupan yang diminta. |
expires_at |
number |
Stempel waktu saat masa berlaku Token Akses akan berakhir. |
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)
Minta cakupan tambahan kepada pengguna.
Lihat GoogleAuth.signIn()
untuk mengetahui 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 pasangan nilai kunci parameter. Misalnya: { scope: 'profile email' } |
GoogleUser.disconnect()
Membatalkan semua cakupan yang diberikan pengguna untuk aplikasi.
Elemen UI
gapi.signin2.render(id, options)
Merender tombol login di elemen dengan ID yang diberikan, menggunakan setelan yang ditentukan oleh objek options.
Argumen | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
id | ID elemen tempat tombol login akan dirender. | ||||||||||||||||
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 pop-up ke alur login Google atau mencoba memuat respons yang diminta secara otomatis, tanpa interaksi pengguna.
Beberapa kasus penggunaan yang berguna untuk metode ini mencakup:
- Aplikasi Anda hanya perlu meminta endpoint Google API satu kali, misalnya untuk memuat video YouTube favorit pengguna saat pertama kali mereka login.
- Aplikasi Anda memiliki infrastruktur pengelolaan sesi sendiri, dan hanya memerlukan Token ID sekali untuk mengidentifikasi pengguna di backend Anda.
- Beberapa Client-ID digunakan dalam halaman yang sama.
Argumen | |
---|---|
params |
Objek yang berisi pasangan nilai kunci data konfigurasi. Lihat
gapi.auth2.AuthorizeConfig untuk
berbagai properti yang dapat dikonfigurasi. Misalnya:
{ 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 (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 menginisialisasi iframe yang diperlukan dari Google, misalnya, karena lingkungan
tidak didukung. Properti
details
akan memberikan informasi selengkapnya tentang error yang ditampilkan. popup_closed_by_user
- Pengguna menutup pop-up sebelum menyelesaikan alur login.
access_denied
- Pengguna menolak izin ke 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 mewakili berbagai parameter konfigurasi untuk
metode gapi.auth2.authorize
.
Properti | ||
---|---|---|
client_id |
string |
Wajib diisi. Client ID aplikasi, yang ditemukan dan dibuat di Konsol Google API. |
scope |
string |
Wajib diisi. Cakupan yang akan diminta, sebagai string yang dipisahkan spasi. |
response_type |
string |
Daftar jenis respons yang dipisahkan spasi. Default-nya adalah 'permission' . Nilai yang mungkin
adalah:
|
prompt |
string |
Memaksa mode tertentu untuk alur izin. Nilai yang memungkinkan adalah:
|
cookie_policy |
string |
Domain yang akan digunakan untuk membuat cookie login. URI,
single_host_origin , atau none . Setelan defaultnya adalah
single_host_origin jika tidak ditentukan.
|
hosted_domain |
string |
Domain G Suite tempat pengguna harus tergabung untuk login. Properti ini rentan terhadap perubahan oleh klien, jadi pastikan untuk memverifikasi properti domain yang dihosting dari pengguna yang ditampilkan. |
login_hint |
string |
Email, atau ID Pengguna, pengguna yang akan dipilih sebelumnya di alur login. Hal ini rentan terhadap
perubahan oleh pengguna, kecuali jika prompt: "none" digunakan.
|
include_granted_scopes |
boolean |
Apakah akan meminta Token Akses yang menyertakan semua cakupan yang sebelumnya diberikan oleh pengguna
ke aplikasi, atau hanya cakupan yang diminta dalam panggilan saat ini. Default-nya adalah true .
|
enable_granular_consent |
boolean |
Opsional. Apakah akan mengaktifkan
izin
terperinci. Jika ditetapkan ke false , izin Akun Google yang lebih terperinci akan dinonaktifkan untuk client ID OAuth yang dibuat sebelum tahun 2019. Tidak berpengaruh untuk Client ID OAuth yang dibuat selama atau setelah tahun 2019, karena izin yang lebih terperinci selalu diaktifkan untuk client ID tersebut.
|
plugin_name |
string |
Opsional. Jika ditetapkan, Client ID yang dibuat sebelum 29 Juli 2022 dapat menggunakan
Library Platform Google. Secara default, Client ID yang baru dibuat diblokir
agar tidak menggunakan Library Platform dan sebagai gantinya harus menggunakan library Google
Identity Services yang lebih baru. Anda dapat memilih nilai apa pun, 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 di response_type .
|
id_token |
string |
Token ID diberikan. Hanya ada jika id_token ditentukan dalam
response_type .
|
code |
string |
Kode Otorisasi 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 masa berlaku 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 masa berlaku Token Akses akan berakhir. Hanya ada jika permission
atau token ditentukan dalam response_type .
|
error |
string |
Jika permintaan gagal, kode ini akan berisi kode error. |
error_subtype |
string |
Jika permintaan gagal, ini dapat berisi informasi tambahan untuk kode error yang juga ditampilkan. |