The question covers it all.
I’m starting to go insane with this thing.
I don’t know why but its just outright crashing the application with no error log to explain it, I login with the account portal, I get the online x friends popup in the top right corner but the moment I try to ConnectLogin after it just crashes
But here’s my code.
public void Login_Persistent()
{
Login(LoginCredentialType.PersistentAuth);
}
public void Login_AccountPortal()
{
Login(LoginCredentialType.AccountPortal);
}
public void Login(LoginCredentialType credentialsType)
{
var auth = _platformInterface.GetAuthInterface();
var loginOptions = new Epic.OnlineServices.Auth.LoginOptions
{
Credentials = new Epic.OnlineServices.Auth.Credentials
{
Type = credentialsType
},
ScopeFlags = AuthScopeFlags.BasicProfile | AuthScopeFlags.FriendsList
};
auth.Login(loginOptions, null, loginResult =>
{
if (loginResult.ResultCode == Epic.OnlineServices.Result.Success)
{
DebugConsole.Log($"[EOSManager] Epic login successful. EpicAccountId = {loginResult.LocalUserId}");
auth.CopyUserAuthToken(
new CopyUserAuthTokenOptions(),
loginResult.LocalUserId,
out var token
);
_epicAccountId = loginResult.LocalUserId;
this.token = token;
HandleAuthLoginSuccess(loginResult.ContinuanceToken);
}
else
{
DebugConsole.LogError($"[EOSManager] Epic login failed: {loginResult.ResultCode}");
if(credentialsType == LoginCredentialType.PersistentAuth)
{
Login_AccountPortal();
}
}
});
}
public void HandleAuthLoginSuccess(ContinuanceToken continueanceToken)
{
var connect = _platformInterface.GetConnectInterface();
if (continueanceToken != null)
{
CreateUser(connect, continueanceToken);
}
else
{
ConnectLogin(connect);
}
}
private void CreateUser(ConnectInterface connect, ContinuanceToken continuanceToken)
{
var linkOptions = new CreateUserOptions
{
ContinuanceToken = continuanceToken
};
connect.CreateUser(linkOptions, null, linkResult =>
{
if (linkResult.ResultCode == Epic.OnlineServices.Result.Success)
{
_localUserId = linkResult.LocalUserId;
_initialized = true;
OnLoginSuccessful?.Invoke();
DebugConsole.Log($"[EOSManager] Created new EOS user. ProductUserId = {_localUserId}");
}
else
{
DebugConsole.LogError($"[EOSManager] CreateUser failed: {linkResult.ResultCode}");
}
});
}
private void ConnectLogin(ConnectInterface connect)
{
if(string.IsNullOrEmpty(this.token.AccessToken))
{
DebugConsole.LogError("Failed to connect login! Access token is invalid!");
return;
}
var connectLoginOptions = new Epic.OnlineServices.Connect.LoginOptions
{
Credentials = new Epic.OnlineServices.Connect.Credentials
{
Type = Epic.OnlineServices.Connect.ExternalCredentialType.Epic,
Token = token.AccessToken
}
};
try
{
connect.Login(connectLoginOptions, null, connectLoginResult =>
{
DebugConsole.Log($"[EOSManager] Connect.Login callback received. Result = {connectLoginResult.ResultCode}");
if (connectLoginResult.ResultCode == Epic.OnlineServices.Result.Success ||
connectLoginResult.ResultCode == Epic.OnlineServices.Result.AlreadyConfigured)
{
_localUserId = connectLoginResult.LocalUserId;
_initialized = true;
OnLoginSuccessful?.Invoke();
DebugConsole.Log($"[EOSManager] Connected existing EOS user. ProductUserId = {_localUserId}");
}
else if (connectLoginResult.ResultCode == Epic.OnlineServices.Result.InvalidUser)
{
DebugConsole.LogWarning("[EOSManager] Connect.Login returned InvalidUser — need to create a new one.");
CreateUser(connect, connectLoginResult.ContinuanceToken);
}
else
{
DebugConsole.LogError($"[EOSManager] Connect.Login failed: {connectLoginResult.ResultCode}");
}
});
} catch(Exception ex)
{
DebugConsole.LogError($"[EOSManager] Failed to connect login: {ex}");
}
}