diff --git a/Source/OnlineSubsystemAccelByte/Private/AsyncTasks/Identity/OnlineAsyncTaskAccelByteSimultaneousLogin.cpp b/Source/OnlineSubsystemAccelByte/Private/AsyncTasks/Identity/OnlineAsyncTaskAccelByteSimultaneousLogin.cpp index 3e5bc32e..26e7bcd7 100644 --- a/Source/OnlineSubsystemAccelByte/Private/AsyncTasks/Identity/OnlineAsyncTaskAccelByteSimultaneousLogin.cpp +++ b/Source/OnlineSubsystemAccelByte/Private/AsyncTasks/Identity/OnlineAsyncTaskAccelByteSimultaneousLogin.cpp @@ -77,14 +77,8 @@ void FOnlineAsyncTaskAccelByteSimultaneousLogin::Initialize() return; } - if (Subsystem->IsMultipleLocalUsersEnabled()) - { - SetApiClient(FMultiRegistry::GetApiClient(FString::Printf(TEXT("%d"), LoginUserNum))); - } - else - { - SetApiClient(FMultiRegistry::GetApiClient()); - } + InitApiClient(); + API_CLIENT_CHECK_GUARD(ErrorStr); ApiClient->CredentialsRef->SetClientCredentials(FRegistry::Settings.ClientId, FRegistry::Settings.ClientSecret); diff --git a/Source/OnlineSubsystemAccelByte/Private/AsyncTasks/LoginQueue/OnlineAsyncTaskAccelByteLoginQueue.cpp b/Source/OnlineSubsystemAccelByte/Private/AsyncTasks/LoginQueue/OnlineAsyncTaskAccelByteLoginQueue.cpp index 131876e2..04b4807e 100644 --- a/Source/OnlineSubsystemAccelByte/Private/AsyncTasks/LoginQueue/OnlineAsyncTaskAccelByteLoginQueue.cpp +++ b/Source/OnlineSubsystemAccelByte/Private/AsyncTasks/LoginQueue/OnlineAsyncTaskAccelByteLoginQueue.cpp @@ -139,15 +139,8 @@ void FOnlineAsyncTaskAccelByteLoginQueue::ClaimAccessToken(const FString& InTick { AB_OSS_ASYNC_TASK_TRACE_BEGIN(TEXT("LocalUserNum: %d, TicketId: %s"), LoginUserNum, *InTicketId); - if (Subsystem->IsMultipleLocalUsersEnabled()) - { - SetApiClient(FMultiRegistry::GetApiClient(FString::Printf(TEXT("%d"), LoginUserNum))); - } - else - { - SetApiClient(FMultiRegistry::GetApiClient()); - } - + InitApiClientForLogin(LoginUserNum); + if(!IsApiClientValid()) { AB_OSS_ASYNC_TASK_TRACE_END(TEXT("Unable to claim access token, ApiClient is invalid")); diff --git a/Source/OnlineSubsystemAccelByte/Private/AsyncTasks/LoginQueue/OnlineAsyncTaskAccelByteLoginQueueCancelTicket.cpp b/Source/OnlineSubsystemAccelByte/Private/AsyncTasks/LoginQueue/OnlineAsyncTaskAccelByteLoginQueueCancelTicket.cpp index 2f539ba1..e4e7108e 100644 --- a/Source/OnlineSubsystemAccelByte/Private/AsyncTasks/LoginQueue/OnlineAsyncTaskAccelByteLoginQueueCancelTicket.cpp +++ b/Source/OnlineSubsystemAccelByte/Private/AsyncTasks/LoginQueue/OnlineAsyncTaskAccelByteLoginQueueCancelTicket.cpp @@ -25,15 +25,8 @@ void FOnlineAsyncTaskAccelByteLoginQueueCancelTicket::Initialize() Super::Initialize(); - if (Subsystem->IsMultipleLocalUsersEnabled()) - { - SetApiClient(FMultiRegistry::GetApiClient(FString::Printf(TEXT("%d"), LoginUserNum))); - } - else - { - SetApiClient(FMultiRegistry::GetApiClient()); - } - + InitApiClientForLogin(LoginUserNum); + API_CLIENT_CHECK_GUARD(ErrorStr); OnCancelTicketSuccessHandler = TDelegateUtils::CreateThreadSafeSelfPtr(this, &FOnlineAsyncTaskAccelByteLoginQueueCancelTicket::OnCancelTicketSuccess); diff --git a/Source/OnlineSubsystemAccelByte/Private/AsyncTasks/LoginQueue/OnlineAsyncTaskAccelByteLoginRefreshTicket.cpp b/Source/OnlineSubsystemAccelByte/Private/AsyncTasks/LoginQueue/OnlineAsyncTaskAccelByteLoginRefreshTicket.cpp index ed315873..e58ab650 100644 --- a/Source/OnlineSubsystemAccelByte/Private/AsyncTasks/LoginQueue/OnlineAsyncTaskAccelByteLoginRefreshTicket.cpp +++ b/Source/OnlineSubsystemAccelByte/Private/AsyncTasks/LoginQueue/OnlineAsyncTaskAccelByteLoginRefreshTicket.cpp @@ -26,14 +26,7 @@ void FOnlineAsyncTaskAccelByteLoginRefreshTicket::Initialize() Super::Initialize(); AB_OSS_ASYNC_TASK_TRACE_BEGIN(TEXT("LoginUserNum: %d"), LoginUserNum); - if (Subsystem->IsMultipleLocalUsersEnabled()) - { - SetApiClient(FMultiRegistry::GetApiClient(FString::Printf(TEXT("%d"), LoginUserNum))); - } - else - { - SetApiClient(FMultiRegistry::GetApiClient()); - } + InitApiClientForLogin(LoginUserNum); OnRefreshTicketSuccessHandler = TDelegateUtils>::CreateThreadSafeSelfPtr(this, &FOnlineAsyncTaskAccelByteLoginRefreshTicket::OnRefreshTicketSuccess); OnRefreshTicketErrorHandler = TDelegateUtils::CreateThreadSafeSelfPtr(this, &FOnlineAsyncTaskAccelByteLoginRefreshTicket::OnRefreshTicketError); diff --git a/Source/OnlineSubsystemAccelByte/Private/AsyncTasks/OnlineAsyncTaskAccelByte.cpp b/Source/OnlineSubsystemAccelByte/Private/AsyncTasks/OnlineAsyncTaskAccelByte.cpp index 52f908ca..a037c812 100644 --- a/Source/OnlineSubsystemAccelByte/Private/AsyncTasks/OnlineAsyncTaskAccelByte.cpp +++ b/Source/OnlineSubsystemAccelByte/Private/AsyncTasks/OnlineAsyncTaskAccelByte.cpp @@ -4,6 +4,7 @@ #include "AsyncTasks/OnlineAsyncTaskAccelByte.h" #include "AsyncTasks/OnlineAsyncEpicTaskAccelByte.h" +#include "Core/AccelByteMultiRegistry.h" void FOnlineAsyncTaskAccelByte::ExecuteCriticalSectionAction(FVoidHandler Action) { @@ -58,3 +59,15 @@ void FOnlineAsyncTaskAccelByte::ForcefullySetTimeoutState() DeltaTickAccumulation += TaskTimeoutInSeconds; LastTaskUpdateInSeconds -= TaskTimeoutInSeconds; } + +void FOnlineAsyncTaskAccelByte::InitApiClientForLogin(int LoginUserNum) +{ + if (Subsystem->IsMultipleLocalUsersEnabled()) + { + SetApiClient(AccelByte::FMultiRegistry::GetApiClient(FString::Printf(TEXT("%s/%d"), *Subsystem->GetInstanceName().ToString(), LoginUserNum))); + } + else + { + SetApiClient(AccelByte::FMultiRegistry::GetApiClient()); + } +} \ No newline at end of file diff --git a/Source/OnlineSubsystemAccelByte/Private/AsyncTasks/OnlineAsyncTaskAccelByteLogin.cpp b/Source/OnlineSubsystemAccelByte/Private/AsyncTasks/OnlineAsyncTaskAccelByteLogin.cpp index a4902d60..ae66ae7b 100644 --- a/Source/OnlineSubsystemAccelByte/Private/AsyncTasks/OnlineAsyncTaskAccelByteLogin.cpp +++ b/Source/OnlineSubsystemAccelByte/Private/AsyncTasks/OnlineAsyncTaskAccelByteLogin.cpp @@ -84,14 +84,7 @@ void FOnlineAsyncTaskAccelByteLogin::Initialize() GConfig->GetInt(TEXT("OnlineSubsystemAccelByte"), TEXT("LoginQueuePresentationThreshold"), LoginQueuePresentationThreshold, GEngineIni); - if (Subsystem->IsMultipleLocalUsersEnabled()) - { - SetApiClient(FMultiRegistry::GetApiClient(FString::Printf(TEXT("%d"), LoginUserNum))); - } - else - { - SetApiClient(FMultiRegistry::GetApiClient()); - } + InitApiClient(); API_CLIENT_CHECK_GUARD(); //Valid because just recently SetApiClient() @@ -217,6 +210,11 @@ void FOnlineAsyncTaskAccelByteLogin::TriggerDelegates() AB_OSS_ASYNC_TASK_TRACE_END(TEXT("")); } +void FOnlineAsyncTaskAccelByteLogin::InitApiClient() +{ + InitApiClientForLogin(LoginUserNum); +} + void FOnlineAsyncTaskAccelByteLogin::LoginWithNativeSubsystem() { #if WITH_EDITOR diff --git a/Source/OnlineSubsystemAccelByte/Private/AsyncTasks/OnlineAsyncTaskAccelByteLogin.h b/Source/OnlineSubsystemAccelByte/Private/AsyncTasks/OnlineAsyncTaskAccelByteLogin.h index 5ef6bc25..65306faa 100644 --- a/Source/OnlineSubsystemAccelByte/Private/AsyncTasks/OnlineAsyncTaskAccelByteLogin.h +++ b/Source/OnlineSubsystemAccelByte/Private/AsyncTasks/OnlineAsyncTaskAccelByteLogin.h @@ -160,6 +160,12 @@ class ONLINESUBSYSTEMACCELBYTE_API FOnlineAsyncTaskAccelByteLogin #endif + /** + * Initializes the ApiClient for this login, using ContextName/LocalUserNum as the key if multiple users are enabled, + * or using the global default ApiClient if not + */ + void InitApiClient(); + /** * Attempts to fire off a login request with a native subsystem, if one is set up and usable. * diff --git a/Source/OnlineSubsystemAccelByte/Private/AsyncTasks/User/OnlineAsyncTaskAccelByteValidateUserInput.cpp b/Source/OnlineSubsystemAccelByte/Private/AsyncTasks/User/OnlineAsyncTaskAccelByteValidateUserInput.cpp index b2b0ca76..4abe9526 100644 --- a/Source/OnlineSubsystemAccelByte/Private/AsyncTasks/User/OnlineAsyncTaskAccelByteValidateUserInput.cpp +++ b/Source/OnlineSubsystemAccelByte/Private/AsyncTasks/User/OnlineAsyncTaskAccelByteValidateUserInput.cpp @@ -28,7 +28,7 @@ void FOnlineAsyncTaskAccelByteValidateUserInput::Initialize() // Ensure to always get api client since the endpoint is able to call without authorization if (Subsystem->GetApiClient(LocalUserNum) == nullptr) { - SetApiClient(FMultiRegistry::GetApiClient(FString::Printf(TEXT("%d"), LocalUserNum))); + SetApiClient(FMultiRegistry::GetApiClient(FString::Printf(TEXT("%s/%d"), *Subsystem->GetInstanceName().ToString(), LocalUserNum))); } API_CLIENT_CHECK_GUARD(OnlineError) diff --git a/Source/OnlineSubsystemAccelByte/Public/AsyncTasks/OnlineAsyncTaskAccelByte.h b/Source/OnlineSubsystemAccelByte/Public/AsyncTasks/OnlineAsyncTaskAccelByte.h index 4eba1ff1..04f842a8 100644 --- a/Source/OnlineSubsystemAccelByte/Public/AsyncTasks/OnlineAsyncTaskAccelByte.h +++ b/Source/OnlineSubsystemAccelByte/Public/AsyncTasks/OnlineAsyncTaskAccelByte.h @@ -495,6 +495,14 @@ class FOnlineAsyncTaskAccelByte : public FOnlineAsyncTaskBasic