Login atau mendaftarkan pengguna menggunakan kredensial dari Penyedia Identitas (IdP). Hal ini dilakukan dengan memberikan kredensial IdP secara manual, atau dengan memberikan respons otorisasi yang diperoleh melalui permintaan otorisasi dari accounts.createAuthUri. Jika login berhasil, token ID dan token refresh Identity Platform baru akan dikeluarkan untuk pengguna yang diautentikasi.
Akun pengguna Identity Platform baru akan dibuat jika pengguna belum pernah login ke IdP dengan akun yang sama. Selain itu, jika setelan "Satu akun per alamat email" diaktifkan, tidak boleh ada akun pengguna Identity Platform yang sudah ada dengan alamat email yang sama agar akun pengguna baru dapat dibuat.
Kunci API diperlukan dalam permintaan untuk mengidentifikasi project Google Cloud.
Permintaan HTTP
POST https://identitytoolkit.googleapis.com/v1/accounts:signInWithIdp
URL menggunakan sintaks gRPC Transcoding.
Isi permintaan
Isi permintaan memuat data dengan struktur berikut:
Representasi JSON |
---|
{ "requestUri": string, "postBody": string, "pendingIdToken": string, "returnRefreshToken": boolean, "sessionId": string, "delegatedProjectNumber": string, "idToken": string, "returnSecureToken": boolean, "returnIdpCredential": boolean, "autoCreate": boolean, "tenantId": string, "pendingToken": string } |
Kolom | |
---|---|
requestUri |
Wajib. URL tempat IdP mengalihkan pengguna kembali. Ini dapat disetel ke |
postBody |
Jika pengguna login dengan respons otorisasi yang diperoleh melalui permintaan otorisasi accounts.createAuthUri sebelumnya, ini adalah isi callback POST HTTP dari IdP, jika ada. Atau, jika pengguna login dengan kredensial IdP yang diberikan secara manual, kredensial tersebut harus berupa formulir yang dienkode URL yang berisi kredensial (misalnya, token ID atau token akses untuk IdP OAuth 2.0) dan ID penyedia IdP yang menerbitkan kredensial. Misalnya, jika pengguna login ke penyedia Google menggunakan token ID Google, token ini harus ditetapkan ke id_token Jika pengguna login ke penyedia Facebook menggunakan token autentikasi Facebook, token ini harus ditetapkan ke id_token Jika pengguna login ke penyedia Facebook menggunakan token akses Facebook, token ini harus ditetapkan ke access_token Jika pengguna login ke penyedia Twitter menggunakan kredensial Twitter OAuth 1.0, setelan ini harus ditetapkan ke access_token |
pendingIdToken |
|
returnRefreshToken |
Apakah akan menampilkan token refresh OAuth dari IdP atau tidak, jika tersedia. |
sessionId |
ID sesi yang ditampilkan dari panggilan accounts.createAuthUri sebelumnya. Kolom ini diverifikasi terhadap ID sesi tersebut untuk mencegah serangan fiksasi sesi. Wajib jika pengguna login dengan respons otorisasi dari permintaan otorisasi accounts.createAuthUri sebelumnya. |
delegatedProjectNumber |
|
idToken |
Token ID Identity Platform yang valid. Jika lulus, akun pengguna di IdP akan ditautkan ke akun yang diwakili oleh token ID ini. |
returnSecureToken |
Harus selalu benar. |
returnIdpCredential |
Apakah akan menampilkan kredensial OAuth dari IdP atau tidak pada error berikut: |
autoCreate |
|
tenantId |
ID tenant Identity Platform tempat pengguna login. Jika tidak ditetapkan, pengguna akan login ke project Identity Platform default. |
pendingToken |
String buram dari respons accounts.signInWithIdp sebelumnya. Jika ditetapkan, parameter ini dapat digunakan untuk mengulangi operasi login dari operasi accounts.signInWithIdp sebelumnya. Hal ini mungkin terjadi jika pengguna perlu mengonfirmasi informasi akunnya sebagai bagian dari upaya login gabungan sebelumnya, atau melakukan penautan akun. |
Isi respons
Pesan respons untuk accounts.signInWithIdp.
Jika berhasil, isi respons memuat data dengan struktur berikut:
Representasi JSON |
---|
{
"federatedId": string,
"providerId": string,
"email": string,
"emailVerified": boolean,
"firstName": string,
"fullName": string,
"lastName": string,
"nickName": string,
"language": string,
"timeZone": string,
"photoUrl": string,
"dateOfBirth": string,
"inputEmail": string,
"originalEmail": string,
"localId": string,
"emailRecycled": boolean,
"displayName": string,
"idToken": string,
"context": string,
"verifiedProvider": [
string
],
"needConfirmation": boolean,
"oauthAccessToken": string,
"oauthRefreshToken": string,
"oauthExpireIn": integer,
"oauthAuthorizationCode": string,
"needEmail": boolean,
"oauthTokenSecret": string,
"refreshToken": string,
"expiresIn": string,
"oauthIdToken": string,
"screenName": string,
"rawUserInfo": string,
"errorMessage": string,
"isNewUser": boolean,
"kind": string,
"pendingToken": string,
"tenantId": string,
"mfaPendingCredential": string,
"mfaInfo": [
{
object ( |
Kolom | |
---|---|
federatedId |
ID akun pengguna di IdP. Selalu ada dalam respons. |
providerId |
ID penyedia IdP yang digunakan pengguna untuk login. Selalu ada dalam respons. |
email |
Alamat email akun pengguna di IdP. |
emailVerified |
Apakah alamat email akun pengguna telah diverifikasi. |
firstName |
Nama depan untuk akun pengguna di IdP. |
fullName |
Nama lengkap untuk akun pengguna di IdP. |
lastName |
Nama belakang untuk akun pengguna di IdP. |
nickName |
Nama panggilan untuk akun pengguna di IdP. |
language |
Preferensi bahasa untuk akun pengguna di IdP. |
timeZone |
Zona waktu untuk akun pengguna di IdP. |
photoUrl |
URL foto profil pengguna di IdP. |
dateOfBirth |
Tanggal lahir untuk akun pengguna di IdP. |
inputEmail |
|
originalEmail |
Alamat email utama (tingkat teratas) akun Identity Platform pengguna, jika berbeda dengan alamat email di IdP. Hanya ada jika setelan "Satu akun per alamat email" diaktifkan. |
localId |
ID pengguna Identity Platform yang diautentikasi. Selalu ada dalam respons. |
emailRecycled |
Apakah ada akun pengguna Identity Platform yang sudah ada dengan alamat email yang sama, tetapi ditautkan ke akun lain di IdP yang sama. Hanya ada jika setelan "Satu akun per alamat email" diaktifkan dan alamat email di IdP diverifikasi. |
displayName |
Nama tampilan untuk akun pengguna di IdP. |
idToken |
Token ID Identity Platform untuk pengguna yang diautentikasi. |
context |
String buram yang ditetapkan di accounts.createAuthUri yang digunakan untuk mempertahankan informasi kontekstual antara permintaan autentikasi dan callback dari IdP. |
verifiedProvider[] |
Daftar ID penyedia yang dapat digunakan pengguna untuk login guna menyelesaikan error |
needConfirmation |
Apakah ada akun pengguna Identity Platform yang sudah ada dengan alamat email yang sama dengan akun saat ini yang login di IdP, dan alamat email akun tidak diverifikasi di IdP. Pengguna harus login ke akun Identity Platform yang ada, lalu menautkan kredensial saat ini dari IdP ke akun tersebut. Hanya ada jika setelan "Satu akun per alamat email" diaktifkan. |
oauthAccessToken |
Token akses OAuth dari IdP, jika tersedia. |
oauthRefreshToken |
Token refresh OAuth 2.0 dari IdP, jika tersedia dan |
oauthExpireIn |
Jumlah detik hingga masa berlaku token akses OAuth dari IdP berakhir. |
oauthAuthorizationCode |
Kode otorisasi OAuth 2.0, jika tersedia. Hanya ada untuk penyedia Google. |
needEmail |
|
oauthTokenSecret |
Rahasia token OAuth 1.0 dari IdP, jika tersedia. Hanya ada untuk penyedia Twitter. |
refreshToken |
Token refresh Identity Platform untuk pengguna yang diautentikasi. |
expiresIn |
Jumlah detik hingga masa berlaku token ID Identity Platform berakhir. |
oauthIdToken |
Token ID OpenID Connect dari IdP, jika tersedia. |
screenName |
Nama sebutan untuk akun pengguna di IdP Twitter atau nama login untuk akun pengguna di IdP GitHub. |
rawUserInfo |
Respons JSON yang di-stringify yang berisi semua data yang sesuai dengan akun pengguna di IdP. |
errorMessage |
Pesan error ditampilkan jika |
isNewUser |
Apakah akun Identity Platform baru dibuat untuk pengguna yang diautentikasi atau tidak. |
kind |
|
pendingToken |
String buram yang dapat digunakan sebagai kredensial dari IdP yang digunakan pengguna untuk login. Token tertunda yang diperoleh di sini dapat ditetapkan dalam permintaan accounts.signInWithIdp mendatang untuk membuat pengguna yang sama login lagi dengan IdP. |
tenantId |
Nilai kolom |
mfaPendingCredential |
String buram yang berfungsi sebagai bukti bahwa pengguna telah berhasil lulus autentikasi faktor pertama. |
mfaInfo[] |
Info tentang penyedia autentikasi multi-faktor yang diaktifkan untuk akun. Ada jika pengguna perlu menyelesaikan login menggunakan autentikasi multi-faktor. |
Cakupan otorisasi
Memerlukan salah satu cakupan OAuth berikut:
https://www.googleapis.com/auth/identitytoolkit
https://www.googleapis.com/auth/cloud-platform
Untuk mengetahui informasi selengkapnya, lihat Authentication Overview.