Method: accounts.signInWithIdp

Consente a un utente di accedere o registrarsi utilizzando le credenziali di un provider di identità (IdP). Ciò viene fatto fornendo manualmente una credenziale dell'IDP o fornendo la risposta di autorizzazione ottenuta tramite la richiesta di autorizzazione da accounts.createAuthUri. Se l'accesso va a buon fine, vengono emessi un nuovo token ID e un nuovo token di aggiornamento di Identity Platform per l'utente autenticato.

Verrà creato un nuovo account utente Identity Platform se l'utente non ha eseguito l'accesso in precedenza al provider di identità con lo stesso account. Inoltre, quando l'impostazione "Un account per indirizzo email" è attiva, non deve esistere un account utente Identity Platform con lo stesso indirizzo email per poter creare un nuovo account utente.

Per identificare il progetto Google Cloud, nella richiesta è obbligatoria una chiave API.

Richiesta HTTP

POST https://identitytoolkit.googleapis.com/v1/accounts:signInWithIdp

L'URL utilizza la sintassi di transcodifica gRPC.

Corpo della richiesta

Il corpo della richiesta contiene dati con la seguente struttura:

Rappresentazione 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
}
Campi
requestUri

string

Obbligatorio. L'URL a cui l'IdP reindirizza l'utente. Questo valore può essere impostato su http://localhost se l'utente accede con una credenziale dell'IdP fornita manualmente.

postBody

string

Se l'utente accede con una risposta di autorizzazione ottenuta tramite una precedente richiesta di autorizzazione accounts.createAuthUri, questo è il corpo del callback POST HTTP dall'IdP, se presente.

In caso contrario, se l'utente accede con una credenziale dell'IDP fornita manualmente, deve essere un modulo con codifica URL contenente la credenziale (ad es. un token ID o un token di accesso per le IdP OAuth 2.0) e l'ID provider dell'IDP che ha emesso la credenziale.

Ad esempio, se l'utente accede al provider Google utilizzando un token ID Google, questo valore deve essere impostato su id_token=[GOOGLE_ID_TOKEN]&providerId=google.com, dove [GOOGLE_ID_TOKEN] deve essere sostituito con il token ID Google.

Se l'utente accede al provider Facebook utilizzando un token di autenticazione Facebook, questo valore deve essere impostato su id_token=[FACEBOOK_AUTHENTICATION_TOKEN]&providerId=facebook. com&nonce= [NONCE], dove [FACEBOOK_AUTHENTICATION_TOKEN] deve essere sostituito con il token di autenticazione Facebook. Il nonce è necessario per convalidare il token. La richiesta non andrà a buon fine se non viene fornito alcun nonce.

Se l'utente accede al provider Facebook utilizzando un token di accesso Facebook, questo valore deve essere impostato su access_token=[FACEBOOK_ACCESS_TOKEN]&providerId=facebook. com, dove [FACEBOOK_ACCESS_TOKEN] deve essere sostituito con il token di accesso Facebook.

Se l'utente accede al provider Twitter utilizzando una credenziale OAuth 1.0 di Twitter, questo valore deve essere impostato su access_token=[TWITTER_ACCESS_TOKEN]&oauthTokenSecret= [TWITTER_TOKEN_SECRET]&providerId=twitter.com, dove [TWITTER_ACCESS_TOKEN] e [TWITTER_TOKEN_SECRET] devono essere sostituiti rispettivamente con il token di accesso OAuth di Twitter e il token segreto OAuth di Twitter.

pendingIdToken
(deprecated)

string

returnRefreshToken

boolean

Se restituire o meno il token di aggiornamento OAuth dall'IdP, se disponibile.

sessionId

string

L'ID sessione restituito da una chiamata accounts.createAuthUri precedente. Questo campo viene verificato in base a questo ID sessione per impedire attacchi di fissazione della sessione. Obbligatorio se l'utente accede con una risposta di autorizzazione da una precedente richiesta di autorizzazione accounts.createAuthUri.

delegatedProjectNumber
(deprecated)

string (int64 format)

idToken

string

Un token ID Identity Platform valido. Se viene superato, l'account dell'utente presso l'IdP verrà collegato all'account rappresentato da questo token ID.

returnSecureToken

boolean

Deve sempre essere true.

returnIdpCredential

boolean

Indica se restituire o meno le credenziali OAuth dall'IDP in caso di errori FEDERATED_USER_ID_ALREADY_LINKED e EMAIL_EXISTS.

autoCreate
(deprecated)

boolean

tenantId

string

L'ID del tenant Identity Platform a cui l'utente sta accedendo. Se non è impostato, l'utente accederà al progetto Identity Platform predefinito.

pendingToken

string

Una stringa opaca da una risposta accounts.signInWithIdp precedente. Se impostato, può essere utilizzato per ripetere l'operazione di accesso dall'operazione accounts.signInWithIdp precedente. Questo può verificarsi se l'utente deve confermare i dati del proprio account nell'ambito di un precedente tentativo di accesso federato o eseguire il collegamento dell'account.

Corpo della risposta

Messaggio di risposta per accounts.signInWithIdp.

In caso di esito positivo, il corpo della risposta contiene dati con la seguente struttura:

Rappresentazione 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)
    }
  ]
}
Campi
federatedId

string

L'ID account dell'utente presso il provider di identità. Sempre presente nella risposta.

providerId

string

L'ID provider dell'IdP a cui l'utente sta accedendo. Sempre presente nella risposta.

email

string

L'indirizzo email dell'account dell'utente presso l'IDP.

emailVerified

boolean

Indica se l'indirizzo email dell'account utente è verificato.

firstName

string

Il nome dell'account dell'utente presso l'IDP.

fullName

string

Il nome completo dell'account dell'utente presso l'IDP.

lastName

string

Il cognome dell'account dell'utente presso l'IDP.

nickName

string

Il nickname dell'account dell'utente presso l'IDP.

language

string

La preferenza di lingua per l'account dell'utente presso l'IDP.

timeZone

string

Il fuso orario dell'account dell'utente presso l'IDP.

photoUrl

string

L'URL dell'immagine del profilo dell'utente nell'IDP.

dateOfBirth

string

La data di nascita dell'account dell'utente presso l'SP.

inputEmail
(deprecated)

string

originalEmail

string

L'indirizzo email principale (di primo livello) dell'account Identity Platform dell'utente, se diverso dall'indirizzo email dell'IdP. Presente solo se è attiva l'impostazione "Un account per indirizzo email".

localId

string

L'ID dell'utente di Identity Platform autenticato. Sempre presente nella risposta.

emailRecycled

boolean

Se esiste o meno un account utente Identity Platform con lo stesso indirizzo email, ma collegato a un altro account nello stesso IdP. Presente solo se l'impostazione "Un account per indirizzo email" è attivata e l'indirizzo email presso l'IDP è verificato.

displayName

string

Il nome visualizzato dell'account dell'utente presso l'IDP.

idToken

string

Un token ID Identity Platform per l'utente autenticato.

context

string

La stringa opaca impostata in accounts.createAuthUri che viene utilizzata per mantenere le informazioni contestuali tra la richiesta di autenticazione e il callback dell'IDP.

verifiedProvider[]

string

Un elenco di ID provider a cui l'utente può accedere per risolvere un errore needConfirmation. Presente solo se needConfirmation è impostato su true.

needConfirmation

boolean

Se esiste o meno un account utente Identity Platform con lo stesso indirizzo email dell'account corrente che ha eseguito l'accesso all'IdP e se l'indirizzo email dell'account non è verificato nell'IdP. L'utente dovrà accedere all'account Identity Platform esistente e collegare le credenziali correnti dell'IdP. Presente solo se è attiva l'impostazione "Un account per indirizzo email".

oauthAccessToken

string

Il token di accesso OAuth dell'IDP, se disponibile.

oauthRefreshToken

string

Il token di aggiornamento OAuth 2.0 dell'IDP, se disponibile e returnRefreshToken è impostato su true.

oauthExpireIn

integer

Il numero di secondi che rimangono prima della scadenza del token di accesso OAuth dell'IDP.

oauthAuthorizationCode

string

Il codice di autorizzazione OAuth 2.0, se disponibile. Presente solo per il provider Google.

needEmail
(deprecated)

boolean

oauthTokenSecret

string

Il secret del token OAuth 1.0 dell'IDP, se disponibile. Presente solo per il provider Twitter.

refreshToken

string

Un token di aggiornamento di Identity Platform per l'utente autenticato.

expiresIn

string (int64 format)

Il numero di secondi che rimangono prima della scadenza del token ID di Identity Platform.

oauthIdToken

string

Il token ID OpenID Connect del provider di identità, se disponibile.

screenName

string

Il nome visualizzato dell'account dell'utente presso l'IDP Twitter o il nome di accesso dell'account dell'utente presso l'IDP GitHub.

rawUserInfo

string

La risposta JSON con stringa contenente tutti i dati corrispondenti all'account dell'utente presso l'IDP.

errorMessage

string

Il messaggio di errore restituito se returnIdpCredential è impostato su true e si verifica l'errore FEDERATED_USER_ID_ALREADY_LINKED o EMAIL_EXISTS. Il valore di questo campo è FEDERATED_USER_ID_ALREADY_LINKED o EMAIL_EXISTS.

isNewUser

boolean

Indica se è stato creato o meno un nuovo account Identity Platform per l'utente autenticato.

kind
(deprecated)

string

pendingToken

string

Una stringa opaca che può essere utilizzata come credenziale dell'IdP a cui l'utente accede. Il token in attesa ottenuto qui può essere impostato in una richiesta accounts.signInWithIdp futura per consentire di nuovo allo stesso utente di accedere con l'IDP.

tenantId

string

Il valore del campo tenantId nella richiesta.

mfaPendingCredential

string

Una stringa opaca che funge da prova che l'utente ha superato l'autenticazione a due fattori.

mfaInfo[]

object (MfaEnrollment)

Informazioni sui provider di autenticazione a più fattori abilitati per l'account. Presente se l'utente deve completare l'accesso utilizzando l'autenticazione a più fattori.

Ambiti di autorizzazione

Richiede uno dei seguenti ambiti OAuth:

  • https://www.googleapis.com/auth/identitytoolkit
  • https://www.googleapis.com/auth/cloud-platform

Per ulteriori informazioni, consulta la sezione Authentication Overview.