C++ 연동
Learn how to implement authentication using C++ in Unreal Engine.
읽는 시간 3분최근 업데이트: 12시간 전
다음 섹션에서는 Unreal Engine 보조 시스템을 사용하여 Authentication SDK와 연동하는 방법을 설명합니다. 블루프린트 API는 이 기능을 노출하는 Authentication 보조 시스템을 제공합니다.
종속성으로 Authentication SDK 추가
계속하기 전에 모듈의 공용 종속성으로AuthenticationAuthentication자신의 클래스에 액세스하려는 플러그인 헤더 파일을 포함합니다.PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "Authentication" });
#include "AuthenticationSubsystem.h"
Authentication 보조 시스템
Authentication 보조 시스템에는 Unity Authentication 서버와 통신하고, 플레이어 프로필 정보를 보관하고, 로컬 스토리지에서 플레이어 환경 설정을 로드/언로드하는 인터페이스가 포함되어 있습니다. 인증 라이프사이클을 처리하고 프로젝트의 중요한 인증 정보를 저장하는 역할을 담당합니다. UGameInstance에서 레퍼런스를 가져와서 Authentication 보조 시스템에 액세스할 수 있습니다.UWorld* GameWorld = GetWorld();UGameInstance* GameInstance = GameWorld->GetGameInstance();UAuthenticationSubsystem* AuthenticationSubsystem = GameInstance->GetSubsystem<UAuthenticationSubsystem>();
SignInAnonymously
익명으로 인증하려면 SignInAnonymously() 메서드를 사용합니다. 이는 사용자 정보 없이 빠르게 인증할 수 있는 방법이며, 외부 공급자와의 상호 작용이 필요하지 않습니다. 성공하면 현재 플레이어 프로필이 Unity Authentication 서버에서 반환된 검색된 자격 증명 정보로 채워집니다. SignInAnonymously()는 로그인 수행 방식을 변경하는 파라미터로FAuthenticationSignInOptionsFAuthenticationResponse// Create sign-in options bodyFAuthenticationSignInOptions SignInOptions;SignInOptions.bCreateAccount = true;SignInOptions.Nonce = TEXT("abc123");AuthenticationSubsystem->SignInAnonymously(SignInOptions, THandler<FAuthenticationResponse>::CreateLambda([this](FAuthenticationResponse Response){ // Your response logic here}));
GetUserInfo
GetUserInfo() 메서드를 사용해 현재 인증된 사용자에 대한 정보를 검색합니다. 여기에는 사용자 ID, 인증 타임스탬프, 세션에 연결된 모든 외부 ID 제공업체 정보 등이 포함됩니다. SDK의 응답은FAuthenticationUserResponseAuthenticationSubsystem->GetUserInfo(THandler<FAuthenticationUserResponse>::CreateLambda([this](FAuthenticationUserResponse Response){ // Your response logic here}));
DeleteUser
DeleteUser() 메서드를 사용해 현재 인증된 플레이어와 관련된 모든 정보를 삭제합니다. 이 메서드는 또한 플레이어를 로그아웃하고 플레이어에 연결된 모든 플레이어 환경 설정과 프로필을 삭제합니다.
SDK의 응답은 응답 핸들러에서 처리할 수 있으며, 이 핸들러는 삭제에 성공하면 값이
truefalseboolAuthenticationSubsystem->DeleteUser(THandler<bool>::CreateLambda([this](bool bResponse){ // Your response logic here}));
RegisterStateChangedCallback
RegisterStateChangedCallback() 메서드를 사용해 보조 시스템의 상태가 변경될 때 호출되는 콜백 함수를 할당합니다. 예를 들어, 할당된 함수는 플레이어가 인증에 성공하고 보조 시스템 상태가AuthorizedAuthenticationStateChangedResponseAuthenticationSubsystem->RegisterStateChangedCallback(THandler<AuthenticationStateChangedResponse>::CreateLambda([this](AuthenticationStateChangedResponse Response){ // Your response logic here}));
SignOut
SignOut() 메서드를 사용해 현재 인증된 플레이어 프로필에서 로그아웃합니다. 이렇게 하면 현재 플레이어 프로필이 제거되고 기본 프로필로 전환됩니다. 이 메서드에는 이 플레이어와 관련된 모든 저장된 자격 증명 정보를 제거하는 선택적 파라미터도 있습니다.AuthenticationSubsystem->SignOut(true); // Clear player credentials
SwitchProfile
SwitchProfile()메서드를 사용해 플레이어 프로필로 전환하거나 생성합니다.FString NewProfileName = FString(TEXT("new_profile_123"));AuthenticationSubsystem->SwitchProfile(NewProfileName);
ProfileExists
ProfileExists() 메서드를 사용해 현재 세션에 지정된 프로필이 있는지 확인합니다.FString ProfileToCheckFor = FString(TEXT("new_profile_123"));bool bExists = AuthenticationSubsystem->ProfileExists(ProfileToCheckFor);
GetCurrentProfileName
GetCurrentProfileName() 메서드를 사용해 현재 플레이어 프로필의 이름을 검색합니다.FString ProfileName = AuthenticationSubsystem->GetCurrentProfileName();
GetProfileNames
GetCurrentProfileName() 메서드를 사용해 현재 세션에서 사용 중인 모든 플레이어 프로필 이름 목록을 검색합니다.TArray<FString> ProfileNames = AuthenticationSubsystem->GetProfileNames();
RegisterProfileChangedCallback
RegisterProfileChangedCallback() 메서드를 사용해 플레이어 프로필 변경 시 호출되는 콜백 함수를 지정할 수 있습니다. 예를 들어, 할당된 함수는 SwitchProfile이 성공적으로 실행되면 실행됩니다. SDK의 응답은 AuthenticationPlayerProfileChangedResponse를 수신해야 하는 응답 핸들러에서 처리할 수 있습니다.AuthenticationSubsystem->RegisterPlayerProfileChangedCallback(THandler<AuthenticationPlayerProfileChangedResponse>::CreateLambda([this](AuthenticationPlayerProfileChangedResponse Response){ // Your response logic here}));
RegisterProfileDeletedCallback
RegisterProfileChangedCallback() 메서드를 사용해 현재 세션에서 플레이어 프로필이 제거될 때 호출되는 콜백 함수를 지정합니다. 예를 들어, 할당된 함수는 SignOut이 성공적으로 실행되면 실행됩니다. SDK의 응답은 AuthenticationPlayerProfileChangedResponse를 수신해야 하는 응답 핸들러에서 처리할 수 있습니다.AuthenticationSubsystem->RegisterPlayerProfileChangedCallback(THandler<AuthenticationPlayerProfileChangedResponse>::CreateLambda([this](AuthenticationPlayerProfileChangedResponse Response){ // Your response logic here}));
IsSignedIn
IsSignedIn() 메서드를 사용해 현재 플레이어 프로필이 익명으로 로그인되어 있는지 확인합니다. '로그인' 상태는 권한이 부여된 상태 또는 만료된 상태로 정의됩니다.bool bSignedIn = AuthenticationSubsystem->IsSignedIn();
IsAnonymous
IsAuthorized()메서드를 사용해 현재 플레이어 프로필이 익명으로 로그인되어 있는지 확인합니다. SignInAnonymously를 성공적으로 실행하고 나면 true가 반환됩니다.bool bAnonymous = AuthenticationSubsystem->IsAnonymous();
IsAuthorized
IsAuthorized() 메서드를 사용해 현재 플레이어 프로필이 로그인되어 있고 현재 권한을 부여한 상태인지 확인합니다. 만료 시간이 아직 지나지 않은 상태에서 로그인 메서드를 실행하면 true를 반환해야 합니다.bool bAuthorized = AuthenticationSubsystem->IsAuthorized();
IsExpired
IsExpired() 메서드를 사용해 현재 플레이어 프로필의 세션이 만료되었는지 확인합니다. 성공적인 로그인 응답에서 반환된 만료 시간이 지나면 true를 반환해야 합니다.bool bExpired = AuthenticationSubsystem->IsExpired();
SessionTokenExists
SessionTokenExists()메서드를 사용해 현재 플레이어 프로필에 대한 플레이어 환경 설정에 세션 토큰이 있는지 확인합니다.bool bTokenExists = AuthenticationSubsystem->SessionTokenExists();
GetUnityProjectId
GetUnityProjectId() 메서드를 사용해 현재 인증 세션과 연결된 Unity 프로젝트 ID를 검색합니다.FGuid ProjectId = AuthenticationSubsystem->GetUnityProjectId();
GetUnityEnvironmentName
GetUnityEnvironmentName() 메서드를 사용해 현재 인증 세션과 연결된 Unity 환경 이름의 이름을 검색합니다.FString EnvironmentId = AuthenticationSubsystem->GetUnityEnvironmentName();
GetAccessToken
GetAccessToken() 메서드를 사용해 현재 세션의 액세스 토큰을 검색합니다. 토큰이 없으면 빈 문자열을 반환합니다.FString AccessToken = AuthenticationSubsystem->GetAccessToken();
GetSessionToken
GetSessionToken() 메서드를 사용해 현재 세션의 세션 토큰을 검색합니다. 토큰이 없으면 빈 문자열을 반환합니다.FString SessionToken = AuthenticationSubsystem->GetSessionToken();
GetUserId
GetUserId() 메서드를 사용해 현재 세션의 사용자 ID를 검색합니다. 토큰이 없으면 빈 문자열을 반환합니다.FString UserId = AuthenticationSubsystem->GetUserId();
GetState
GetState() 메서드를 사용해 인증 세션의 현재 상태를 검색합니다.EAuthenticationState UserId = AuthenticationSubsystem->GetUserId();
SetUnityProjectId
SetUnityProjectId() 메서드를 사용해 현재 인증 세션의 Unity 프로젝트 ID를 설정합니다. 이렇게 하면 프로젝트 설정에서 구성된 Unity 프로젝트 ID가 오버라이드됩니다.FGuid NewProjectId = FGuid(TEXT("00000000-1234-1234-000000000000"));AuthenticationSubsystem->SetUnityProjectId(NewProjectId);
SetUnityEnvironmentName
SetUnityEnvironmentName() 메서드를 사용해 현재 인증 세션의 Unity 환경 이름을 설정합니다. 이렇게 하면 프로젝트 설정에서 구성된 Unity 환경 이름이 오버라이드됩니다.FString NewEnvironmentName = FString(TEXT("testenv2"));AuthenticationSubsystem->SetUnityEnvironmentName(NewEnvironmentName );