> ## Documentation Index
> Fetch the complete documentation index at: https://frenglish.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Autenticación de usuarios

> Documentación para la API del SDK de Unreal para gestionar sesiones en la infraestructura de Sequence orientada a juegos web3.

Visite nuestra página de [Requisitos de Plataforma](/sdk/unreal/platforms) para información detallada sobre la configuración y para asegurarse
de que los métodos de autenticación que elija estén correctamente configurados en su proyecto de Builder.

## Iniciar sesión con OTP por correo electrónico

Permita que los usuarios inicien sesión con cualquier correo electrónico, y recibirán una contraseña de un solo uso en su bandeja de entrada.
Escuche el evento Email Requires Code.

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/frenglish/DW77RR7YqAk4ljjJ/images/unreal/email_otp.png?fit=max&auto=format&n=DW77RR7YqAk4ljjJ&q=85&s=6c9804c6c00db89087007119a2ba212e" width="1131" height="400" data-path="images/unreal/email_otp.png" />
    </Frame>
  </Tab>
</Tabs>

## Inicio de sesión con redes sociales

Para iniciar la autenticación basada en SSO en escritorio, debe navegar a un navegador para obtener el id\_token necesario.
En dispositivos móviles, nuestro SDK maneja este proceso por usted utilizando plugins integrados.

En plataformas de escritorio, escuche el evento `Sign in Web View Required` y abra la `Sign In URL` que se retorna.
En plataformas móviles, escuche el evento `Id Token Received`.

Cuando llame a las funciones de `Sign In`, escuche el evento `Session Established` en el subsistema `SequenceSessionsBP`
para saber cuándo la solicitud de inicio de sesión fue exitosa. Escuche `Session Creation Failure` si ocurre algún error.

### Obtener Google Id Token

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/frenglish/DW77RR7YqAk4ljjJ/images/unreal/google_idtoken.png?fit=max&auto=format&n=DW77RR7YqAk4ljjJ&q=85&s=4177a835a01ca5433d2a9aabf71a0d02" width="1231" height="400" data-path="images/unreal/google_idtoken.png" />
    </Frame>
  </Tab>
</Tabs>

### Obtener Apple Id Token

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/frenglish/DW77RR7YqAk4ljjJ/images/unreal/apple_idtoken.png?fit=max&auto=format&n=DW77RR7YqAk4ljjJ&q=85&s=5a1f7af68946ff1d3f9de2305ed86c4d" width="1255" height="400" data-path="images/unreal/apple_idtoken.png" />
    </Frame>
  </Tab>
</Tabs>

### Iniciar sesión con Google

Inicie sesión con un Google Id Token válido. Puede obtenerlo desde el nodo [Get Google Id Token](/sdk/unreal/authentication#get-google-id-token).

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/frenglish/jco-kCqEz4S4wsae/images/unreal/unreal_signin_google.png?fit=max&auto=format&n=jco-kCqEz4S4wsae&q=85&s=9ce1026f452b5aa3422d7838040c21c0" width="2020" height="988" data-path="images/unreal/unreal_signin_google.png" />
    </Frame>
  </Tab>
</Tabs>

### Iniciar sesión con Apple

Inicie sesión con un Apple Id Token válido. Puede obtenerlo desde el nodo [Get Apple Id Token](/sdk/unreal/authentication#get-apple-id-token).

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/frenglish/jco-kCqEz4S4wsae/images/unreal/unreal_signin_apple.png?fit=max&auto=format&n=jco-kCqEz4S4wsae&q=85&s=32744b7ef88876b7dec92cdc46ef33b8" width="2020" height="988" data-path="images/unreal/unreal_signin_apple.png" />
    </Frame>
  </Tab>
</Tabs>

### Iniciar sesión con Epic

Inicie sesión con un Epic Games Id Token válido. Consulte el [EOS Plugin para Unreal](https://dev.epicgames.com/documentation/en-us/unreal-engine/online-subsystem-eos-plugin-in-unreal-engine)

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/frenglish/jco-kCqEz4S4wsae/images/unreal/unreal_signin_epic.png?fit=max&auto=format&n=jco-kCqEz4S4wsae&q=85&s=617427502f745764ccb8d71a8f82b961" width="2020" height="988" data-path="images/unreal/unreal_signin_epic.png" />
    </Frame>
  </Tab>
</Tabs>

### Iniciar sesión con OIDC Id Token

Utilice este método para iniciar una sesión usando un Id token válido de Google, Apple o Epic Games.

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/frenglish/DW77RR7YqAk4ljjJ/images/unreal/token_session.png?fit=max&auto=format&n=DW77RR7YqAk4ljjJ&q=85&s=318d6f646747eb81645fe4b7862e2512" width="1390" height="570" data-path="images/unreal/token_session.png" />
    </Frame>
  </Tab>
</Tabs>

## PlayFab

Deberá incluir su PlayFab Title ID en el archivo `SequenceConfig.ini`
durante la [Configuración](/sdk/unreal/configuration) y [configurar PlayFab en el Builder](/solutions/builder/embedded-wallet/playfab-configuration).

### Registrar un nuevo usuario de PlayFab

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/frenglish/DW77RR7YqAk4ljjJ/images/unreal/playfab_registration.png?fit=max&auto=format&n=DW77RR7YqAk4ljjJ&q=85&s=ad96e62dccc867a97caf8dcce35d3d0d" width="1438" height="520" data-path="images/unreal/playfab_registration.png" />
    </Frame>
  </Tab>
</Tabs>

### Iniciar sesión con un usuario existente de PlayFab

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/frenglish/DW77RR7YqAk4ljjJ/images/unreal/playfab_login.png?fit=max&auto=format&n=DW77RR7YqAk4ljjJ&q=85&s=3a9d702a63d79fe3b3bed83d30b724ea" width="1436" height="522" data-path="images/unreal/playfab_login.png" />
    </Frame>
  </Tab>
</Tabs>

### Integración personalizada de PlayFab

Si tiene su propia integración de PlayFab, puede usarla. Una vez que reciba su SessionTicket de PlayFab, páselo para autenticación con las APIs de Sequence usando el método `PlayfabAuthenticateWithSessionTicket` en su objeto `USequenceAthenticator`.

## Iniciar sesión como invitado

Puede iniciar sesión a los usuarios como invitados. Sin embargo, tenga en cuenta que perderán acceso a su wallet si desinstalan la app o cierran sesión.

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/frenglish/DW77RR7YqAk4ljjJ/images/unreal/guest_session.png?fit=max&auto=format&n=DW77RR7YqAk4ljjJ&q=85&s=23b3a3fb2c32954c06b9f5a45a2ce73c" width="1029" height="400" data-path="images/unreal/guest_session.png" />
    </Frame>
  </Tab>
</Tabs>

## Federar cuentas

Con las Cuentas Federadas, puede asociar múltiples métodos de inicio de sesión con una sola cuenta y wallet.
Si su usuario ha iniciado sesión como invitado, definitivamente querrá motivarlo a federar su
cuenta para que tenga credenciales persistentes con las que pueda acceder a su Sequence Embedded Wallet en sesiones futuras.
Mientras el usuario esté autenticado con la API de Sequence, puede agregar un método de inicio de sesión adicional usando la llamada correspondiente para federar la cuenta.

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/frenglish/DW77RR7YqAk4ljjJ/images/unreal/email_federation.png?fit=max&auto=format&n=DW77RR7YqAk4ljjJ&q=85&s=d410bc79b684d492e35b024ba14df007" width="1131" height="500" data-path="images/unreal/email_federation.png" />
    </Frame>
  </Tab>
</Tabs>

## Obtener Id Token

Un caso de uso común es verificar la identidad del usuario en su backend después de que el usuario haya completado el proceso de inicio de sesión en su app cliente.
Obtenga un Sequence Id Token de sus usuarios para enviarlo a su backend y verificarlo usando cualquier librería JWKS.
Lea nuestra [Guía de Verificación Backend](/sdk/headless-wallet/verification) para más información.

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/frenglish/DW77RR7YqAk4ljjJ/images/unreal/get_id_token.png?fit=max&auto=format&n=DW77RR7YqAk4ljjJ&q=85&s=4c36acb32c49745a882eae6c9f93a228" width="2824" height="1302" data-path="images/unreal/get_id_token.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const TFunction<void (FSeqIdTokenResponse_Data)> OnSuccess = [this](const FSeqIdTokenResponse_Data& Data) { };
    const TFunction<void (FSequenceError)> OnFailure = [this](const FSequenceError& Err){ };

    const TOptional<USequenceWallet*> WalletOptional = USequenceWallet::Get();
    if (WalletOptional.IsSet() && WalletOptional.GetValue())
    {
        const USequenceWallet* Wallet = WalletOptional.GetValue();
        Wallet->GetIdToken(Nonce, OnSuccess, OnFailure);
    }
    ```
  </Tab>
</Tabs>

## Cerrar sesión

Borre el caché de credenciales y cierre la sesión del usuario actual.

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/frenglish/DW77RR7YqAk4ljjJ/images/unreal/sign_out.png?fit=max&auto=format&n=DW77RR7YqAk4ljjJ&q=85&s=73f3732c3cf0835f36ba004522f43394" width="1166" height="432" data-path="images/unreal/sign_out.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const TOptional<USequenceWallet*> WalletOptional = USequenceWallet::Get();
    if (WalletOptional.IsSet() && WalletOptional.GetValue())
    {
        USequenceWallet * Api = WalletOptional.GetValue();
        Api->SignOut();
    }
    ```
  </Tab>
</Tabs>

## Listar sesiones

Lista las sesiones activas.

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/frenglish/DW77RR7YqAk4ljjJ/images/unreal/list_sessions.png?fit=max&auto=format&n=DW77RR7YqAk4ljjJ&q=85&s=b9fa90ea7e10bff33be471b39d62e533" width="1810" height="818" data-path="images/unreal/list_sessions.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const TSuccessCallback<TArray<FSession>> OnSuccess = [=](TArray<FSession> Response)
    {
        //Response is a list of Sessions
    };
    const FFailureCallback OnFailure = [=](const FSequenceError& Error)
    {
        UE_LOG(LogTemp,Display,TEXT("Error Message: %s"),*Error.Message);
    };
    const TOptional<USequenceWallet*> WalletOptional = USequenceWallet::Get();
    if (WalletOptional.IsSet() && WalletOptional.GetValue())
    {
        USequenceWallet * Api = WalletOptional.GetValue();
        Api->ListSessions(OnSuccess,OnFailure);
    }
    ```
  </Tab>
</Tabs>
