From 24952f0d37ec5e16e170f38c635234cc2aae1e08 Mon Sep 17 00:00:00 2001 From: mordentral Date: Wed, 26 Oct 2016 09:21:36 -0400 Subject: [PATCH] Added GetPlayerAuthToken function to advanced identity Now forcing not passing in a player controller if hosting dedicated. Former-commit-id: 7a6578b7ce8d98c87e33ef4623fddc2e39be31ce --- .../Classes/AdvancedIdentityLibrary.h | 4 +++ .../Private/AdvancedIdentityLibrary.cpp | 33 ++++++++++++++++++- .../CreateSessionCallbackProxyAdvanced.cpp | 6 ++-- 3 files changed, 39 insertions(+), 4 deletions(-) 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);