Method: accounts.signInWithIdp

Permite que un usuario acceda o se registre con credenciales de un proveedor de identidad (IdP). Para ello, proporciona manualmente una credencial de IdP o la respuesta de autorización obtenida a través de la solicitud de autorización de accounts.createAuthUri. Si el acceso se realiza de forma correcta, se emiten un nuevo token de ID y un token de actualización de Identity Platform para el usuario autenticado.

Se creará una nueva cuenta de usuario de Identity Platform si el usuario no accedió anteriormente a la IdP con la misma cuenta. Además, cuando se habilita el parámetro de configuración "Una cuenta por dirección de correo electrónico", no debe haber una cuenta de usuario existente de Identity Platform con la misma dirección de correo electrónico para que se cree una nueva.

Se requiere una clave de API en la solicitud para identificar el proyecto de Google Cloud.

Solicitud HTTP

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

La URL usa la sintaxis de la transcodificación gRPC.

Cuerpo de la solicitud

El cuerpo de la solicitud contiene datos con la siguiente estructura:

Representación 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
}
Campos
requestUri

string

Obligatorio. Es la URL a la que el IdP redirecciona al usuario. Se puede establecer en http://localhost si el usuario accede con una credencial de IdP proporcionada de forma manual.

postBody

string

Si el usuario accede con una respuesta de autorización obtenida a través de una solicitud de autorización accounts.createAuthUri anterior, este es el cuerpo de la devolución de llamada HTTP POST del IdP, si está presente.

De lo contrario, si el usuario accede con una credencial de IdP proporcionada de forma manual, este debe ser un formulario codificado en URL que contenga la credencial (p.ej., un token de ID o un token de acceso para los IdP de OAuth 2.0) y el ID del proveedor del IdP que emitió la credencial.

Por ejemplo, si el usuario accede al proveedor de Google con un token de ID de Google, este debe establecerse en id_token=[GOOGLE_ID_TOKEN]&providerId=google.com, donde [GOOGLE_ID_TOKEN] debe reemplazarse por el token de ID de Google.

Si el usuario accede al proveedor de Facebook con un token de autenticación de Facebook, este debe establecerse en id_token=[FACEBOOK_AUTHENTICATION_TOKEN]&providerId=facebook. com&nonce= [NONCE], donde [FACEBOOK_AUTHENTICATION_TOKEN] debe reemplazarse por el token de autenticación de Facebook. Se requiere un nonce para validar el token. La solicitud fallará si no se proporciona un nonce.

Si el usuario accede al proveedor de Facebook con un token de acceso de Facebook, este debe establecerse en access_token=[FACEBOOK_ACCESS_TOKEN]&providerId=facebook. com, donde [FACEBOOK_ACCESS_TOKEN] debe reemplazarse por el token de acceso de Facebook.

Si el usuario accede al proveedor de Twitter con una credencial de OAuth 1.0 de Twitter, se debe establecer en access_token=[TWITTER_ACCESS_TOKEN]&oauthTokenSecret= [TWITTER_TOKEN_SECRET]&providerId=twitter.com, donde [TWITTER_ACCESS_TOKEN] y [TWITTER_TOKEN_SECRET] se deben reemplazar por el token de acceso de OAuth de Twitter y el secreto de token de OAuth de Twitter, respectivamente.

pendingIdToken
(deprecated)

string

returnRefreshToken

boolean

Indica si se debe mostrar o no el token de actualización de OAuth del IdP, si está disponible.

sessionId

string

El ID de sesión que se muestra en una llamada anterior a accounts.createAuthUri. Este campo se verifica con ese ID de sesión para evitar ataques de fijación de sesión. Obligatorio si el usuario accede con una respuesta de autorización de una solicitud de autorización accounts.createAuthUri anterior.

delegatedProjectNumber
(deprecated)

string (int64 format)

idToken

string

Un token de ID de Identity Platform válido Si se aprueba, la cuenta del usuario en el IdP se vinculará a la cuenta representada por este token de ID.

returnSecureToken

boolean

Siempre debe ser verdadero.

returnIdpCredential

boolean

Indica si se deben mostrar o no las credenciales de OAuth del IdP en los siguientes errores: FEDERATED_USER_ID_ALREADY_LINKED y EMAIL_EXISTS.

autoCreate
(deprecated)

boolean

tenantId

string

El ID del grupo de usuarios de Identity Platform al que accede el usuario. Si no se establece, el usuario accederá al proyecto predeterminado de Identity Platform.

pendingToken

string

Es una cadena opaca de una respuesta anterior de accounts.signInWithIdp. Si se establece, se puede usar para repetir la operación de acceso de la operación accounts.signInWithIdp anterior. Esto puede ocurrir si el usuario necesita confirmar la información de su cuenta como parte de un intento de acceso federado anterior o realizar la vinculación de la cuenta.

Cuerpo de la respuesta

Mensaje de respuesta para accounts.signInWithIdp.

Si se ejecuta correctamente, el cuerpo de la respuesta contiene datos con la siguiente estructura:

Representación 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)
    }
  ]
}
Campos
federatedId

string

El ID de la cuenta del usuario en el IdP Siempre está presente en la respuesta.

providerId

string

El ID del proveedor del IdP al que accede el usuario. Siempre está presente en la respuesta.

email

string

Es la dirección de correo electrónico de la cuenta del usuario en el IdP.

emailVerified

boolean

Indica si se verificó la dirección de correo electrónico de la cuenta de usuario.

firstName

string

El nombre de la cuenta del usuario en el IdP.

fullName

string

Es el nombre completo de la cuenta del usuario en el IdP.

lastName

string

El apellido de la cuenta del usuario en el IdP.

nickName

string

Es el sobrenombre de la cuenta del usuario en el IdP.

language

string

Es la preferencia de idioma de la cuenta del usuario en el IdP.

timeZone

string

Es la zona horaria de la cuenta del usuario en el IdP.

photoUrl

string

La URL de la foto de perfil del usuario en el IdP

dateOfBirth

string

Es la fecha de nacimiento de la cuenta del usuario en el IdP.

inputEmail
(deprecated)

string

originalEmail

string

La dirección de correo electrónico principal (de nivel superior) de la cuenta de Identity Platform del usuario, si es diferente de la dirección de correo electrónico del IdP Solo está presente si se habilita el parámetro de configuración “Una cuenta por dirección de correo electrónico”.

localId

string

El ID del usuario autenticado de Identity Platform. Siempre está presente en la respuesta.

emailRecycled

boolean

Si existe o no una cuenta de usuario de Identity Platform existente con la misma dirección de correo electrónico, pero vinculada a una cuenta diferente en el mismo IdP Solo está presente si se habilita la configuración “Una cuenta por dirección de correo electrónico” y se verifica la dirección de correo electrónico en el IdP.

displayName

string

Es el nombre visible de la cuenta del usuario en el IdP.

idToken

string

Un token de ID de Identity Platform para el usuario autenticado.

context

string

Es la cadena opaca establecida en accounts.createAuthUri que se usa para mantener la información contextual entre la solicitud de autenticación y la devolución de llamada del IdP.

verifiedProvider[]

string

Es una lista de IDs de proveedores a los que el usuario puede acceder para resolver un error de needConfirmation. Solo está presente si needConfirmation se establece como true.

needConfirmation

boolean

Si existe o no una cuenta de usuario de Identity Platform existente con la misma dirección de correo electrónico que la cuenta actual a la que se accedió en el IdP y si la dirección de correo electrónico de la cuenta no está verificada en el IdP El usuario deberá acceder a la cuenta existente de Identity Platform y, luego, vincular la credencial actual del IdP a ella. Solo está presente si se habilita el parámetro de configuración “Una cuenta por dirección de correo electrónico”.

oauthAccessToken

string

El token de acceso de OAuth del IdP (si está disponible).

oauthRefreshToken

string

El token de actualización de OAuth 2.0 del IdP, si está disponible y returnRefreshToken está configurado en true.

oauthExpireIn

integer

Es la cantidad de segundos hasta que vence el token de acceso de OAuth del IdP.

oauthAuthorizationCode

string

El código de autorización de OAuth 2.0, si está disponible Solo está presente para el proveedor de Google.

needEmail
(deprecated)

boolean

oauthTokenSecret

string

El secreto de token de OAuth 1.0 del IdP (si está disponible). Solo está presente para el proveedor de Twitter.

refreshToken

string

Un token de actualización de Identity Platform para el usuario autenticado.

expiresIn

string (int64 format)

Es la cantidad de segundos hasta que vence el token de ID de Identity Platform.

oauthIdToken

string

El token de ID de OpenID Connect del IdP, si está disponible

screenName

string

El nombre de pantalla de la cuenta del usuario en el IdP de Twitter o el nombre de acceso de la cuenta del usuario en el IdP de GitHub.

rawUserInfo

string

La respuesta JSON en cadena que contiene todos los datos correspondientes a la cuenta del usuario en el IdP.

errorMessage

string

Es el mensaje de error que se muestra si returnIdpCredential se establece en true y se encuentra el error FEDERATED_USER_ID_ALREADY_LINKED o EMAIL_EXISTS. El valor de este campo es FEDERATED_USER_ID_ALREADY_LINKED o EMAIL_EXISTS.

isNewUser

boolean

Indica si se creó o no una cuenta nueva de Identity Platform para el usuario autenticado.

kind
(deprecated)

string

pendingToken

string

Es una cadena opaca que se puede usar como credencial del IdP al que accede el usuario. El token pendiente que se obtiene aquí se puede establecer en una solicitud accounts.signInWithIdp futura para que el mismo usuario vuelva a acceder con el IdP.

tenantId

string

El valor del campo tenantId en la solicitud.

mfaPendingCredential

string

Es una cadena opaca que funciona como prueba de que el usuario aprobó correctamente la autenticación del primer factor.

mfaInfo[]

object (MfaEnrollment)

Información sobre los proveedores de autenticación de varios factores habilitados para la cuenta Se muestra si el usuario necesita completar el acceso con la autenticación de varios factores.

Permisos de autorización

Se necesita uno de los siguientes permisos de OAuth:

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

Para obtener más información, consulta Authentication Overview.