Choosing a login method
Let players choose an identity route without exposing SDK credential work
Choosing a login method
Use Login before friends, lobbies, sessions, invites, or progression. The node is provider-neutral: a method describes an identity authority, an optional credential source, and only the values your game must supply. UCIK obtains and releases Steam, Discord, Google, Play Games, Apple, and Game Center credentials itself.
Guided mode
Choose a fixed method from the Method dropdown. The list is grouped by authority. Unavailable routes stay visible with the exact missing configuration instead of disappearing.
The node creates only the selected descriptor's fields:
| Recipe | Method | Inputs supplied by the game |
|---|---|---|
| Guest account | Betide.EOS.Connect.DeviceId | Optional display name |
| Return silently | Betide.EOS.Auth.Persistent | None |
| Epic sign-in | Betide.EOS.Auth.AccountPortal | None; EOS opens its UI |
| Launcher exchange | Betide.EOS.Auth.ExchangeCode | Exchange code from a runtime wire |
| Developer Auth Tool | Betide.EOS.Auth.Developer | Optional host and credential overrides |
| Steam to EOS | Betide.EOS.Connect.Steam | None; UCIK requests the configured Steam ticket |
| Discord, Google, or Apple to EOS | Corresponding Betide.EOS.Connect.* route | None; UCIK requests the exact credential |
| Cognito password or SRP | Corresponding Betide.Cognito.UserPool.* route | Username and password |
| Cognito managed login, OTP, MFA, passkey, or custom challenge | Corresponding User Pool route | Initial declared fields, then Continue Login responses |
| Google or Apple to Cognito Identity Pool | Corresponding Identity Pool route | None |
| Steam to Cognito Identity Pool | Betide.Cognito.IdentityPool.SteamExchange | None; the configured HTTPS exchange verifies the ticket |
Secret pins refuse saved literal defaults. Wire passwords, exchange codes, and challenge responses from runtime UI state. A typed Credential Override remains under Advanced for projects that acquire proof outside UCIK.
Changing a fixed method preserves compatible wires by stable field ID. Removed connected or defaulted fields become normal orphan pins so no customer data is silently discarded. Project-setting changes never reshape saved nodes; use Refresh Login Method from the node context menu when you intentionally want the latest descriptor.
Runtime mode
From the node context menu select Use Runtime Login Request. The method-specific pins become one stable FUCIK_LoginRequest input. Build a login screen by calling Get Login Methods, render each descriptor's fields, and submit the chosen method ID and typed field values.
Auto is a policy resolver. It selects the first configured and available method from Project Settings > Betide > Crossplay > Auto Login Routes for the current platform. Automatic startup uses this same request pipeline.
Results and continuation
Both terminal delegates expose stable outputs:
| Pin | Meaning |
|---|---|
Player | The primary authority handle |
Identity | Primary authority, handles keyed by FBetideProviderId, and authenticated credential sources |
Error | Role, provider, route, code, and actionable missing configuration |
An interactive method can enter Needs User Interface or Needs Challenge Response before it completes. Render the returned challenge and call Continue Login with the same operation and challenge IDs. Use Cancel Login when the player closes the screen. Account creation, linking, transfer, and merge are explicit Account Policy choices; UCIK never merges accounts implicitly.
Use Get Identity Handle, Get Authenticated Providers, and Has Identity Provider for stable secondary-provider queries. See Login in C++, the adaptive example, and AWS Cognito.