88 lines
2.5 KiB
C#
88 lines
2.5 KiB
C#
|
|
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()");
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|