diff --git a/Source/AdvancedSessions/Classes/AdvancedIdentityLibrary.h b/Source/AdvancedSessions/Classes/AdvancedIdentityLibrary.h index 4363988..1db2cd2 100644 --- a/Source/AdvancedSessions/Classes/AdvancedIdentityLibrary.h +++ b/Source/AdvancedSessions/Classes/AdvancedIdentityLibrary.h @@ -29,6 +29,10 @@ public: UFUNCTION(BlueprintCallable, Category = "Online|AdvancedIdentity", meta = (ExpandEnumAsExecs = "Result")) static void GetLoginStatus(const FBPUniqueNetId & UniqueNetID, EBPLoginStatus & LoginStatus, EBlueprintResultSwitch &Result); + // Get the auth token for a local player + UFUNCTION(BlueprintCallable, Category = "Online|AdvancedIdentity", meta = (ExpandEnumAsExecs = "Result")) + static void GetPlayerAuthToken(APlayerController * PlayerController, FString & AuthToken, EBlueprintResultSwitch &Result); + // Get a players nickname UFUNCTION(BlueprintPure, Category = "Online|AdvancedIdentity") static void GetPlayerNickname(const FBPUniqueNetId & UniqueNetID, FString & PlayerNickname); diff --git a/Source/AdvancedSessions/Private/AdvancedIdentityLibrary.cpp b/Source/AdvancedSessions/Private/AdvancedIdentityLibrary.cpp index e0dc47a..662404e 100644 --- a/Source/AdvancedSessions/Private/AdvancedIdentityLibrary.cpp +++ b/Source/AdvancedSessions/Private/AdvancedIdentityLibrary.cpp @@ -5,6 +5,38 @@ //General Log DEFINE_LOG_CATEGORY(AdvancedIdentityLog); + +void UAdvancedIdentityLibrary::GetPlayerAuthToken(APlayerController * PlayerController, FString & AuthToken, EBlueprintResultSwitch &Result) +{ + if (!PlayerController) + { + UE_LOG(AdvancedIdentityLog, Warning, TEXT("GetPlayerAuthToken was passed a bad player controller!")); + Result = EBlueprintResultSwitch::OnFailure; + return; + } + + ULocalPlayer* Player = Cast(PlayerController->Player); + + if (!Player) + { + UE_LOG(AdvancedIdentityLog, Warning, TEXT("GetPlayerAuthToken failed to get LocalPlayer!")); + Result = EBlueprintResultSwitch::OnFailure; + return; + } + + IOnlineIdentityPtr IdentityInterface = Online::GetIdentityInterface(); + + if (!IdentityInterface.IsValid()) + { + UE_LOG(AdvancedIdentityLog, Warning, TEXT("GetPlayerAuthToken Failed to get identity interface!")); + Result = EBlueprintResultSwitch::OnFailure; + return; + } + + AuthToken = IdentityInterface->GetAuthToken(Player->GetControllerId()); + Result = EBlueprintResultSwitch::OnSuccess; +} + void UAdvancedIdentityLibrary::GetPlayerNickname(const FBPUniqueNetId & UniqueNetID, FString & PlayerNickname) { if (!UniqueNetID.IsValid()) @@ -20,7 +52,6 @@ void UAdvancedIdentityLibrary::GetPlayerNickname(const FBPUniqueNetId & UniqueNe UE_LOG(AdvancedIdentityLog, Warning, TEXT("GetPlayerNickname Failed to get identity interface!")); return; } - PlayerNickname = IdentityInterface->GetPlayerNickname(*UniqueNetID.GetUniqueNetId()); } diff --git a/Source/AdvancedSessions/Private/CreateSessionCallbackProxyAdvanced.cpp b/Source/AdvancedSessions/Private/CreateSessionCallbackProxyAdvanced.cpp index 4fde1db..8305b39 100644 --- a/Source/AdvancedSessions/Private/CreateSessionCallbackProxyAdvanced.cpp +++ b/Source/AdvancedSessions/Private/CreateSessionCallbackProxyAdvanced.cpp @@ -73,13 +73,13 @@ void UCreateSessionCallbackProxyAdvanced::Activate() for (int i = 0; i < ExtraSettings.Num(); i++) { ExtraSetting.Data = ExtraSettings[i].Data; - // ViaOnlineServiceAndPing + // ViaOnlineServiceAndPing ExtraSetting.AdvertisementType = EOnlineDataAdvertisementType::ViaOnlineService; Settings.Settings.Add(ExtraSettings[i].Key, ExtraSetting); } - - if (PlayerControllerWeakPtr.IsValid() && Helper.UserID.IsValid()) + + if (!bDedicatedServer && PlayerControllerWeakPtr.IsValid() && Helper.UserID.IsValid()) Sessions->CreateSession(*Helper.UserID, GameSessionName, Settings); else Sessions->CreateSession(0, GameSessionName, Settings);