Method: accounts.signInWithIdp

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

string

Wajib. URL tempat IdP mengalihkan pengguna kembali. Ini dapat disetel ke http://localhost jika pengguna login dengan kredensial IdP yang diberikan secara manual.

postBody

string

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=[GOOGLE_ID_TOKEN]&providerId=google.com, dengan [GOOGLE_ID_TOKEN] harus diganti dengan token ID Google.

Jika pengguna login ke penyedia Facebook menggunakan token autentikasi Facebook, token ini harus ditetapkan ke id_token=[FACEBOOK_AUTHENTICATION_TOKEN]&providerId=facebook. com&nonce= [NONCE], dengan [FACEBOOK_AUTHENTICATION_TOKEN] harus diganti dengan token autentikasi Facebook. Nonce diperlukan untuk memvalidasi token. Permintaan akan gagal jika tidak ada nonce yang diberikan.

Jika pengguna login ke penyedia Facebook menggunakan token akses Facebook, token ini harus ditetapkan ke access_token=[FACEBOOK_ACCESS_TOKEN]&providerId=facebook. com, dengan [FACEBOOK_ACCESS_TOKEN] harus diganti dengan token akses Facebook.

Jika pengguna login ke penyedia Twitter menggunakan kredensial Twitter OAuth 1.0, setelan ini harus ditetapkan ke access_token=[TWITTER_ACCESS_TOKEN]&oauthTokenSecret= [TWITTER_TOKEN_SECRET]&providerId=twitter.com, dengan [TWITTER_ACCESS_TOKEN] dan [TWITTER_TOKEN_SECRET] masing-masing diganti dengan token akses Twitter OAuth dan secret token Twitter OAuth.

pendingIdToken
(deprecated)

string

returnRefreshToken

boolean

Apakah akan menampilkan token refresh OAuth dari IdP atau tidak, jika tersedia.

sessionId

string

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
(deprecated)

string (int64 format)

idToken

string

Token ID Identity Platform yang valid. Jika lulus, akun pengguna di IdP akan ditautkan ke akun yang diwakili oleh token ID ini.

returnSecureToken

boolean

Harus selalu benar.

returnIdpCredential

boolean

Apakah akan menampilkan kredensial OAuth dari IdP atau tidak pada error berikut: FEDERATED_USER_ID_ALREADY_LINKED dan EMAIL_EXISTS.

autoCreate
(deprecated)

boolean

tenantId

string

ID tenant Identity Platform tempat pengguna login. Jika tidak ditetapkan, pengguna akan login ke project Identity Platform default.

pendingToken

string

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 (MfaEnrollment)
    }
  ]
}
Kolom
federatedId

string

ID akun pengguna di IdP. Selalu ada dalam respons.

providerId

string

ID penyedia IdP yang digunakan pengguna untuk login. Selalu ada dalam respons.

email

string

Alamat email akun pengguna di IdP.

emailVerified

boolean

Apakah alamat email akun pengguna telah diverifikasi.

firstName

string

Nama depan untuk akun pengguna di IdP.

fullName

string

Nama lengkap untuk akun pengguna di IdP.

lastName

string

Nama belakang untuk akun pengguna di IdP.

nickName

string

Nama panggilan untuk akun pengguna di IdP.

language

string

Preferensi bahasa untuk akun pengguna di IdP.

timeZone

string

Zona waktu untuk akun pengguna di IdP.

photoUrl

string

URL foto profil pengguna di IdP.

dateOfBirth

string

Tanggal lahir untuk akun pengguna di IdP.

inputEmail
(deprecated)

string

originalEmail

string

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

string

ID pengguna Identity Platform yang diautentikasi. Selalu ada dalam respons.

emailRecycled

boolean

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

string

Nama tampilan untuk akun pengguna di IdP.

idToken

string

Token ID Identity Platform untuk pengguna yang diautentikasi.

context

string

String buram yang ditetapkan di accounts.createAuthUri yang digunakan untuk mempertahankan informasi kontekstual antara permintaan autentikasi dan callback dari IdP.

verifiedProvider[]

string

Daftar ID penyedia yang dapat digunakan pengguna untuk login guna menyelesaikan error needConfirmation. Hanya ada jika needConfirmation ditetapkan ke true.

needConfirmation

boolean

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

string

Token akses OAuth dari IdP, jika tersedia.

oauthRefreshToken

string

Token refresh OAuth 2.0 dari IdP, jika tersedia dan returnRefreshToken ditetapkan ke true.

oauthExpireIn

integer

Jumlah detik hingga masa berlaku token akses OAuth dari IdP berakhir.

oauthAuthorizationCode

string

Kode otorisasi OAuth 2.0, jika tersedia. Hanya ada untuk penyedia Google.

needEmail
(deprecated)

boolean

oauthTokenSecret

string

Rahasia token OAuth 1.0 dari IdP, jika tersedia. Hanya ada untuk penyedia Twitter.

refreshToken

string

Token refresh Identity Platform untuk pengguna yang diautentikasi.

expiresIn

string (int64 format)

Jumlah detik hingga masa berlaku token ID Identity Platform berakhir.

oauthIdToken

string

Token ID OpenID Connect dari IdP, jika tersedia.

screenName

string

Nama sebutan untuk akun pengguna di IdP Twitter atau nama login untuk akun pengguna di IdP GitHub.

rawUserInfo

string

Respons JSON yang di-stringify yang berisi semua data yang sesuai dengan akun pengguna di IdP.

errorMessage

string

Pesan error ditampilkan jika returnIdpCredential ditetapkan ke true dan error FEDERATED_USER_ID_ALREADY_LINKED atau EMAIL_EXISTS terjadi. Nilai kolom ini adalah FEDERATED_USER_ID_ALREADY_LINKED atau EMAIL_EXISTS.

isNewUser

boolean

Apakah akun Identity Platform baru dibuat untuk pengguna yang diautentikasi atau tidak.

kind
(deprecated)

string

pendingToken

string

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

string

Nilai kolom tenantId dalam permintaan.

mfaPendingCredential

string

String buram yang berfungsi sebagai bukti bahwa pengguna telah berhasil lulus autentikasi faktor pertama.

mfaInfo[]

object (MfaEnrollment)

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.