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 |
Obligatorio. Es la URL a la que el IdP redirecciona al usuario. Se puede establecer en |
postBody |
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 Si el usuario accede al proveedor de Facebook con un token de autenticación de Facebook, este debe establecerse en id_token Si el usuario accede al proveedor de Facebook con un token de acceso de Facebook, este debe establecerse en access_token Si el usuario accede al proveedor de Twitter con una credencial de OAuth 1.0 de Twitter, se debe establecer en access_token |
pendingIdToken |
|
returnRefreshToken |
Indica si se debe mostrar o no el token de actualización de OAuth del IdP, si está disponible. |
sessionId |
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 |
|
idToken |
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 |
Siempre debe ser verdadero. |
returnIdpCredential |
Indica si se deben mostrar o no las credenciales de OAuth del IdP en los siguientes errores: |
autoCreate |
|
tenantId |
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 |
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 ( |
Campos | |
---|---|
federatedId |
El ID de la cuenta del usuario en el IdP Siempre está presente en la respuesta. |
providerId |
El ID del proveedor del IdP al que accede el usuario. Siempre está presente en la respuesta. |
email |
Es la dirección de correo electrónico de la cuenta del usuario en el IdP. |
emailVerified |
Indica si se verificó la dirección de correo electrónico de la cuenta de usuario. |
firstName |
El nombre de la cuenta del usuario en el IdP. |
fullName |
Es el nombre completo de la cuenta del usuario en el IdP. |
lastName |
El apellido de la cuenta del usuario en el IdP. |
nickName |
Es el sobrenombre de la cuenta del usuario en el IdP. |
language |
Es la preferencia de idioma de la cuenta del usuario en el IdP. |
timeZone |
Es la zona horaria de la cuenta del usuario en el IdP. |
photoUrl |
La URL de la foto de perfil del usuario en el IdP |
dateOfBirth |
Es la fecha de nacimiento de la cuenta del usuario en el IdP. |
inputEmail |
|
originalEmail |
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 |
El ID del usuario autenticado de Identity Platform. Siempre está presente en la respuesta. |
emailRecycled |
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 |
Es el nombre visible de la cuenta del usuario en el IdP. |
idToken |
Un token de ID de Identity Platform para el usuario autenticado. |
context |
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[] |
Es una lista de IDs de proveedores a los que el usuario puede acceder para resolver un error de |
needConfirmation |
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 |
El token de acceso de OAuth del IdP (si está disponible). |
oauthRefreshToken |
El token de actualización de OAuth 2.0 del IdP, si está disponible y |
oauthExpireIn |
Es la cantidad de segundos hasta que vence el token de acceso de OAuth del IdP. |
oauthAuthorizationCode |
El código de autorización de OAuth 2.0, si está disponible Solo está presente para el proveedor de Google. |
needEmail |
|
oauthTokenSecret |
El secreto de token de OAuth 1.0 del IdP (si está disponible). Solo está presente para el proveedor de Twitter. |
refreshToken |
Un token de actualización de Identity Platform para el usuario autenticado. |
expiresIn |
Es la cantidad de segundos hasta que vence el token de ID de Identity Platform. |
oauthIdToken |
El token de ID de OpenID Connect del IdP, si está disponible |
screenName |
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 |
La respuesta JSON en cadena que contiene todos los datos correspondientes a la cuenta del usuario en el IdP. |
errorMessage |
Es el mensaje de error que se muestra si |
isNewUser |
Indica si se creó o no una cuenta nueva de Identity Platform para el usuario autenticado. |
kind |
|
pendingToken |
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 |
El valor del campo |
mfaPendingCredential |
Es una cadena opaca que funciona como prueba de que el usuario aprobó correctamente la autenticación del primer factor. |
mfaInfo[] |
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.