> ## Documentation Index
> Fetch the complete documentation index at: https://sequence-0fb8d9e6-codex-update-discord-invite.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Unreal Ecosystem Wallet Authentication

> Ecosystem Wallet Documentation for Sequence's Unreal SDK.

Start with an implicit session which is restricted to contracts built by Sequence.
Alternatively, you can choose to add a [Permissions](/sdk/unreal/wallets/ecosystem-wallet/permissions) object to each Sign In call, if you want to connect to an
explicit session directly.

### Get Ecosystem Config

Get configuration data from the Ecosystem. This includes data such as the name, description, enabled chains and auth providers.

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6-codex-update-discord-invite/FTpX4UAFpHQ_Qb4p/images/unreal/ecosystem/get_ecosystem_config.png?fit=max&auto=format&n=FTpX4UAFpHQ_Qb4p&q=85&s=8193cbba791f9fbaa615bab7354b5021" width="1910" height="930" data-path="images/unreal/ecosystem/get_ecosystem_config.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const TSuccessCallback<FEcosystemConfig> SuccessCallback = [this, OnSuccess](const FEcosystemConfig& Config)
    {
        // Ecosystem Name: Config.Name
        // Supported Chains: Config.SupportedChains
        // Auth Providers: Config.EnabledProviders
    };

    const FFailureCallback FailureCallback = [OnFailure](const FSequenceError& Error) { };

    USequenceConnect* Connect = NewObject<USequenceConnect>();
    Connect->GetEcosystemConfig(SuccessCallback, FailureCallback);
    ```
  </Tab>
</Tabs>

## Sign In with Email

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6-codex-update-discord-invite/FTpX4UAFpHQ_Qb4p/images/unreal/ecosystem/sign_in_email.png?fit=max&auto=format&n=FTpX4UAFpHQ_Qb4p&q=85&s=2bd7d03a29765d5b0c3dc7ce1cf175e6" width="967" height="500" data-path="images/unreal/ecosystem/sign_in_email.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const TSuccessCallback<bool> SuccessCallback = [this, OnSuccess](bool Result) { };
    const FFailureCallback FailureCallback = [OnFailure](const FSequenceError& Error) { };

    USequenceConnect* Connect = NewObject<USequenceConnect>();
    Connect->SignInWithEmail(Email, Permissions, SuccessCallback, FailureCallback);
    ```
  </Tab>
</Tabs>

## Sign In with Google

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6-codex-update-discord-invite/FTpX4UAFpHQ_Qb4p/images/unreal/ecosystem/sign_in_google.png?fit=max&auto=format&n=FTpX4UAFpHQ_Qb4p&q=85&s=9dcb1ef7c84d005a82545d41de637c0e" width="967" height="500" data-path="images/unreal/ecosystem/sign_in_google.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const TSuccessCallback<bool> SuccessCallback = [this, OnSuccess](bool Result) { };
    const FFailureCallback FailureCallback = [OnFailure](const FSequenceError& Error) { };

    USequenceConnect* Connect = NewObject<USequenceConnect>();
    Connect->SignInWithGoogle(Permissions, SuccessCallback, FailureCallback);
    ```
  </Tab>
</Tabs>

## Sign In with Apple

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6-codex-update-discord-invite/FTpX4UAFpHQ_Qb4p/images/unreal/ecosystem/sign_in_apple.png?fit=max&auto=format&n=FTpX4UAFpHQ_Qb4p&q=85&s=f3231c0a51ffb0d9923d05dda1bf0e78" width="967" height="500" data-path="images/unreal/ecosystem/sign_in_apple.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const TSuccessCallback<bool> SuccessCallback = [this, OnSuccess](bool Result) { };
    const FFailureCallback FailureCallback = [OnFailure](const FSequenceError& Error) { };

    USequenceConnect* Connect = NewObject<USequenceConnect>();
    Connect->SignInWithApple(Permissions, SuccessCallback, FailureCallback);
    ```
  </Tab>
</Tabs>

## Sign In with Passkey

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6-codex-update-discord-invite/FTpX4UAFpHQ_Qb4p/images/unreal/ecosystem/sign_in_passkey.png?fit=max&auto=format&n=FTpX4UAFpHQ_Qb4p&q=85&s=80bc6d3db1ef43eb826eba9a03899a30" width="967" height="500" data-path="images/unreal/ecosystem/sign_in_passkey.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const TSuccessCallback<bool> SuccessCallback = [this, OnSuccess](bool Result) { };
    const FFailureCallback FailureCallback = [OnFailure](const FSequenceError& Error) { };

    USequenceConnect* Connect = NewObject<USequenceConnect>();
    Connect->SignInWithPasskey(Permissions, SuccessCallback, FailureCallback);
    ```
  </Tab>
</Tabs>

## Sign In with Mnemonic

<Tabs>
  <Tab title="Blueprint">
    <Frame>
      <img src="https://mintcdn.com/sequence-0fb8d9e6-codex-update-discord-invite/FTpX4UAFpHQ_Qb4p/images/unreal/ecosystem/sign_in_mnemonic.png?fit=max&auto=format&n=FTpX4UAFpHQ_Qb4p&q=85&s=457396a5db24c6f73fc74ea88927d581" width="967" height="500" data-path="images/unreal/ecosystem/sign_in_mnemonic.png" />
    </Frame>
  </Tab>

  <Tab title="C++">
    ```cpp theme={null}
    const TSuccessCallback<bool> SuccessCallback = [this, OnSuccess](bool Result) { };
    const FFailureCallback FailureCallback = [OnFailure](const FSequenceError& Error) { };

    USequenceConnect* Connect = NewObject<USequenceConnect>();
    Connect->SignInWithMnemonic(Permissions, SuccessCallback, FailureCallback);
    ```
  </Tab>
</Tabs>
