This template lets you quickly add "login via Steam" functionality to your game. Make sure you read the authentication documentation page first.
Before you add the template to your game, you need to add the following fields to your
public class PlayerEntity : Entity
public string steamId;
public DateTime lastLoginAt = DateTime.UtcNow;
steamId field stores the player's Steam ID. If this value is
null, it's considered that the player entity has no associated Steam account. This is because you could combine Steam authentication with other forms of authentication (e.g. via email). If Steam authentication is the only authentication you use, then you shouldn't have any
nulls in the field.
Note: If you already have players registered in your database, you can simply add these new fields and all the old entities will be considered to have the default values (
lastLoginAt, set at the time of loading from the database).
We begin by creating the server-side code. Go to your
Backend folder, right-click and choose
Create > Unisave > Steam authentication > Backend. This will create the following files:
SteamLoginFacet.cshandles logging in via Steam. If the given Steam ID has never been seen ago, it performs player registration. It also has a
Logoutmethod for logging out.
Now we need to create one client-side script that will talk with the facet. Go to your
Scripts folder, right click and choose
Create > Unisave > Steam authentication > Login client.
Now all you need to do is to put one button into the scene, that when clicked calls the
LoginViaSteam method on the just created
SteamLoginClient also requires one field to be filled out, called
sceneAfterLogin. It contains the name of the scene that should be loaded after loggin in.
If you want to perform different action after login, simply modify the source code of the
If you've done everything described so far, you should now be able to use this template. If you, however, want to understand how it works, then continue reading.
This section describes in high-level how the authentication process works.
Let's look at it from the perspective of your backend server. Some client makes requests and we need to know, who that client is (what Steam ID they have). We cannot simply let them tell us their Steam ID, because they could lie to us which would allow anyone to log in as anyone else (Steam ID is more or less public, it's not a secret password, more like an email address).
This template uses Steam Session Tickets to verify the client's identity. The process is as follows:
- Your game client asks the Steam client to generate a secure Session Ticket.
- Your game client sends this ticket to your backend server.
- Your backend server sends the ticket to Steam, which responds with the Steam ID that generated the ticket.
- Your backend server now knows the Steam ID and can be sure of it's validity.
The Session Ticket basically acts as a one-time password that Steam client gives your game client that can only be used to login the player who is currently logged into the Steam client app.
The latest version of the Steam authentication template is
For instructions on how to update, check out the changelog and upgrade guide.