Files
rudder-unity-sdk/Packages/rudder.sdk/Samples~/Authentication/AuthenticationSample.cs
T

88 lines
2.5 KiB
C#
Raw Normal View History

using System.Text;
using System.Threading.Tasks;
using UnityEngine;
using RudderSdk.Unity;
namespace RudderSdk.Unity.Samples
{
public class AuthenticationSample : MonoBehaviour
{
[SerializeField] string nickname = "Player";
[SerializeField] string region = "global";
[SerializeField] string language = "en";
readonly SamplePage _page = new SamplePage(
"Authentication",
"Initialize the SDK, sign in with the device id, then load the player profile.");
void OnGUI()
{
_page.Draw(() =>
{
GUILayout.BeginHorizontal();
_page.Label("Nickname");
nickname = GUILayout.TextField(nickname, GUILayout.MaxWidth(200f));
GUILayout.EndHorizontal();
GUILayout.BeginHorizontal();
if (_page.Button("Login with device"))
_page.Run(this, Login);
if (_page.Button("Load profile"))
_page.Run(this, LoadProfile);
if (_page.Button("Logout"))
Logout();
GUILayout.EndHorizontal();
});
}
async Task Login()
{
var client = Rudder.Initialize();
_page.Log("Auth.LoginWithDeviceAsync(" + region + ", " + language + ", " + nickname + ")");
await client.Auth.LoginWithDeviceAsync(region, language, nickname);
_page.SetStatus("Signed in");
await LoadProfile();
}
async Task LoadProfile()
{
var client = Rudder.Initialize();
_page.Log("Player.GetProfileAsync()");
var profile = await client.Player.GetProfileAsync();
var player = profile?.Player;
var text = new StringBuilder();
text.AppendLine("Player id: " + (player?.Id ?? "—"));
text.AppendLine("Nickname: " + (player?.Nickname ?? "—"));
text.AppendLine("Region: " + (player?.Region ?? "—"));
text.AppendLine("Language: " + (player?.Language ?? "—"));
if (profile?.Wallets == null || profile.Wallets.Count == 0)
{
text.Append("Wallets: none");
}
else
{
text.Append("Wallets:");
foreach (var wallet in profile.Wallets)
text.Append("\n " + wallet.Balance + " " + wallet.Currency);
}
_page.SetOutput(text.ToString());
_page.SetStatus("Profile loaded");
}
void Logout()
{
if (Rudder.State != RudderState.Ready)
{
_page.SetStatus("SDK is not initialized.", true);
return;
}
Rudder.Client.Auth.Logout();
_page.SetOutput(string.Empty);
_page.SetStatus("Signed out");
_page.Log("Auth.Logout()");
}
}
}