Method: accounts.signInWithIdp

Connecte ou inscrit un utilisateur à l'aide des identifiants d'un fournisseur d'identité (IdP). Pour ce faire, vous devez fournir manuellement des identifiants d'IDP ou la réponse d'autorisation obtenue via la requête d'autorisation de accounts.createAuthUri. Si la connexion réussit, un nouveau jeton d'ID Identity Platform et un nouveau jeton d'actualisation sont émis pour l'utilisateur authentifié.

Un nouveau compte utilisateur Identity Platform est créé si l'utilisateur ne s'est pas déjà connecté à l'IdP avec le même compte. De plus, lorsque le paramètre "Un compte par adresse e-mail" est activé, aucun compte utilisateur Identity Platform ne doit exister avec la même adresse e-mail pour qu'un nouveau compte utilisateur puisse être créé.

Une clé API est requise dans la requête pour identifier le projet Google Cloud.

Requête HTTP

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

L'URL utilise la syntaxe de transcodage gRPC.

Corps de la requête

Le corps de la requête contient des données présentant la structure suivante :

Représentation 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
}
Champs
requestUri

string

Obligatoire. URL vers laquelle l'IDP redirige l'utilisateur. Vous pouvez définir cette valeur sur http://localhost si l'utilisateur se connecte avec des identifiants d'IDP fournis manuellement.

postBody

string

Si l'utilisateur se connecte avec une réponse d'autorisation obtenue via une demande d'autorisation accounts.createAuthUri précédente, il s'agit du corps du rappel HTTP POST de l'IDP, le cas échéant.

Sinon, si l'utilisateur se connecte avec des identifiants d'IDP fournis manuellement, il doit s'agir d'un formulaire encodé en URL contenant les identifiants (par exemple, un jeton d'ID ou un jeton d'accès pour les IdP OAuth 2.0) et l'ID du fournisseur de l'IDP qui a émis les identifiants.

Par exemple, si l'utilisateur se connecte au fournisseur Google à l'aide d'un jeton d'ID Google, cette valeur doit être définie sur id_token=[GOOGLE_ID_TOKEN]&providerId=google.com, où [GOOGLE_ID_TOKEN] doit être remplacé par le jeton d'ID Google.

Si l'utilisateur se connecte au fournisseur Facebook à l'aide d'un jeton d'authentification Facebook, ce champ doit être défini sur id_token=[FACEBOOK_AUTHENTICATION_TOKEN]&providerId=facebook. com&nonce= [NONCE], où [FACEBOOK_AUTHENTICATION_TOKEN] doit être remplacé par le jeton d'authentification Facebook. La valeur nonce est requise pour valider le jeton. Si aucun nonce n'est fourni, la requête échoue.

Si l'utilisateur se connecte au fournisseur Facebook à l'aide d'un jeton d'accès Facebook, cette valeur doit être définie sur access_token=[FACEBOOK_ACCESS_TOKEN]&providerId=facebook. com, où [FACEBOOK_ACCESS_TOKEN] doit être remplacé par le jeton d'accès Facebook.

Si l'utilisateur se connecte au fournisseur Twitter à l'aide d'identifiants Twitter OAuth 1.0, ce paramètre doit être défini sur access_token=[TWITTER_ACCESS_TOKEN]&oauthTokenSecret= [TWITTER_TOKEN_SECRET]&providerId=twitter.com, où [TWITTER_ACCESS_TOKEN] et [TWITTER_TOKEN_SECRET] doivent être remplacés respectivement par le jeton d'accès Twitter OAuth et le secret du jeton Twitter OAuth.

pendingIdToken
(deprecated)

string

returnRefreshToken

boolean

Indique si le jeton d'actualisation OAuth doit être renvoyé à partir du fournisseur d'identité, le cas échéant.

sessionId

string

ID de session renvoyé par un appel accounts.createAuthUri précédent. Ce champ est validé par rapport à cet ID de session pour éviter les attaques par fixation de session. Obligatoire si l'utilisateur se connecte avec une réponse d'autorisation issue d'une demande d'autorisation accounts.createAuthUri précédente.

delegatedProjectNumber
(deprecated)

string (int64 format)

idToken

string

Un jeton d'ID Identity Platform valide. Si ce paramètre est transmis, le compte de l'utilisateur auprès du fournisseur d'identité sera associé au compte représenté par ce jeton d'identité.

returnSecureToken

boolean

Doit toujours être défini sur "true".

returnIdpCredential

boolean

Indique si les identifiants OAuth doivent être renvoyés ou non par le fournisseur d'identité en cas d'erreurs FEDERATED_USER_ID_ALREADY_LINKED et EMAIL_EXISTS.

autoCreate
(deprecated)

boolean

tenantId

string

ID du locataire Identity Platform auquel l'utilisateur se connecte. Si ce paramètre n'est pas défini, l'utilisateur se connectera au projet Identity Platform par défaut.

pendingToken

string

Chaîne opaque issue d'une réponse accounts.signInWithIdp précédente. Si elle est définie, elle peut être utilisée pour répéter l'opération de connexion à partir de l'opération accounts.signInWithIdp précédente. Cela peut se produire si l'utilisateur doit confirmer les informations de son compte lors d'une tentative de connexion fédérée précédente ou s'il doit associer des comptes.

Corps de la réponse

Message de réponse pour accounts.signInWithIdp.

Si la requête aboutit, le corps de la réponse contient des données qui ont la structure suivante :

Représentation 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)
    }
  ]
}
Champs
federatedId

string

ID de compte de l'utilisateur auprès du fournisseur d'identité. Toujours présent dans la réponse.

providerId

string

ID du fournisseur de l'IDP auquel l'utilisateur se connecte. Toujours présent dans la réponse.

email

string

Adresse e-mail du compte de l'utilisateur auprès de l'IDP.

emailVerified

boolean

Indique si l'adresse e-mail du compte utilisateur est validée.

firstName

string

Prénom associé au compte de l'utilisateur auprès de l'IDP.

fullName

string

Nom complet du compte de l'utilisateur auprès du fournisseur d'identité.

lastName

string

Nom de famille associé au compte de l'utilisateur auprès du fournisseur d'identité.

nickName

string

Pseudo du compte de l'utilisateur auprès du fournisseur d'identité.

language

string

Préférence linguistique du compte de l'utilisateur auprès du fournisseur d'identité.

timeZone

string

Fuseau horaire du compte de l'utilisateur auprès du fournisseur d'identité.

photoUrl

string

URL de la photo de profil de l'utilisateur sur l'IDP.

dateOfBirth

string

Date de naissance du compte de l'utilisateur auprès du fournisseur d'identité.

inputEmail
(deprecated)

string

originalEmail

string

Adresse e-mail principale (de premier niveau) du compte Identity Platform de l'utilisateur, si elle est différente de l'adresse e-mail du fournisseur d'identité. Ne s'affiche que si le paramètre "Un compte par adresse e-mail" est activé.

localId

string

ID de l'utilisateur Identity Platform authentifié. Toujours présent dans la réponse.

emailRecycled

boolean

Indique si un compte utilisateur Identity Platform existe avec la même adresse e-mail, mais associé à un autre compte auprès du même IdP. Présent uniquement si le paramètre "Un compte par adresse e-mail" est activé et que l'adresse e-mail de l'IDP est validée.

displayName

string

Nom à afficher du compte de l'utilisateur auprès de l'IDP.

idToken

string

Jeton d'ID Identity Platform de l'utilisateur authentifié.

context

string

Chaîne opaque définie dans accounts.createAuthUri, qui permet de conserver des informations contextuelles entre la requête d'authentification et le rappel de l'IDP.

verifiedProvider[]

string

Liste des ID de fournisseur auxquels l'utilisateur peut se connecter pour résoudre une erreur needConfirmation. N'est présent que si needConfirmation est défini sur true.

needConfirmation

boolean

Indique si un compte utilisateur Identity Platform existe ou non avec la même adresse e-mail que le compte actuellement connecté au fournisseur d'identité, et si l'adresse e-mail du compte n'est pas validée auprès du fournisseur d'identité. L'utilisateur devra se connecter au compte Identity Platform existant, puis y associer les identifiants actuels du fournisseur d'identité. Ne s'affiche que si le paramètre "Un compte par adresse e-mail" est activé.

oauthAccessToken

string

Le jeton d'accès OAuth de l'IDP, s'il est disponible.

oauthRefreshToken

string

Le jeton d'actualisation OAuth 2.0 de l'IDP, s'il est disponible et si returnRefreshToken est défini sur true.

oauthExpireIn

integer

Nombre de secondes avant l'expiration du jeton d'accès OAuth de l'IDP.

oauthAuthorizationCode

string

Code d'autorisation OAuth 2.0, le cas échéant Uniquement présent pour le fournisseur Google.

needEmail
(deprecated)

boolean

oauthTokenSecret

string

Secret du jeton OAuth 1.0 de l'IDP, s'il est disponible. Uniquement présent pour le fournisseur Twitter.

refreshToken

string

Jeton d'actualisation Identity Platform de l'utilisateur authentifié.

expiresIn

string (int64 format)

Nombre de secondes avant l'expiration du jeton d'ID Identity Platform.

oauthIdToken

string

Le jeton d'identification OpenID Connect du fournisseur d'identité, s'il est disponible.

screenName

string

Nom d'utilisateur du compte de l'utilisateur auprès du fournisseur d'identité Twitter ou nom d'utilisateur du compte de l'utilisateur auprès du fournisseur d'identité GitHub.

rawUserInfo

string

Réponse JSON convertie en chaîne contenant toutes les données correspondant au compte de l'utilisateur auprès de l'IDP.

errorMessage

string

Message d'erreur renvoyé si returnIdpCredential est défini sur true et qu'une erreur FEDERATED_USER_ID_ALREADY_LINKED ou EMAIL_EXISTS est détectée. La valeur de ce champ est FEDERATED_USER_ID_ALREADY_LINKED ou EMAIL_EXISTS.

isNewUser

boolean

Indique si un compte Identity Platform a été créé pour l'utilisateur authentifié.

kind
(deprecated)

string

pendingToken

string

Chaîne opaque pouvant être utilisée comme identifiant du fournisseur d'identité auquel l'utilisateur se connecte. Le jeton en attente obtenu ici peut être défini dans une future requête accounts.signInWithIdp pour reconnecter le même utilisateur avec l'IDP.

tenantId

string

Valeur du champ tenantId dans la requête.

mfaPendingCredential

string

Chaîne opaque qui sert de preuve que l'utilisateur a réussi l'authentification par premier facteur.

mfaInfo[]

object (MfaEnrollment)

Informations sur les fournisseurs d'authentification multifacteur activés pour le compte. Présent si l'utilisateur doit se connecter à l'aide de l'authentification multifacteur.

Champs d'application des autorisations

Nécessite l'un des champs d'application OAuth suivants :

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

Pour en savoir plus, consultez Authentication Overview.