기술 자료

지원

Authentication for Unreal Engine

Authentication for Unreal Engine

C++ 연동

Learn how to implement authentication using C++ in Unreal Engine.
읽는 시간 3분최근 업데이트: 12시간 전

다음 섹션에서는 Unreal Engine 보조 시스템을 사용하여 Authentication SDK와 연동하는 방법을 설명합니다. 블루프린트 API는 이 기능을 노출하는 Authentication 보조 시스템을 제공합니다.

종속성으로 Authentication SDK 추가

계속하기 전에 모듈의 공용 종속성으로
Authentication
을 추가한 다음 플러그인 헤더 파일을 클래스에 포함합니다.
Unreal 프로젝트 빌드 파일에서 모듈의 종속 관계로
Authentication
를 추가합니다.
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()는 로그인 수행 방식을 변경하는 파라미터로
FAuthenticationSignInOptions
구조체를 사용합니다. 이러한 파라미터에 대한 자세한 내용은 Unity API 서비스 기술 자료 페이지를 참고하십시오.
SDK의 응답은
FAuthenticationResponse
를 수신해야 하는 응답 핸들러에서 처리할 수 있습니다.
// 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의 응답은
FAuthenticationUserResponse
를 수신해야 하는 응답 핸들러에서 처리할 수 있습니다.
AuthenticationSubsystem->GetUserInfo(THandler<FAuthenticationUserResponse>::CreateLambda([this](FAuthenticationUserResponse Response){ // Your response logic here}));

DeleteUser

DeleteUser() 메서드를 사용해 현재 인증된 플레이어와 관련된 모든 정보를 삭제합니다. 이 메서드는 또한 플레이어를 로그아웃하고 플레이어에 연결된 모든 플레이어 환경 설정과 프로필을 삭제합니다. SDK의 응답은 응답 핸들러에서 처리할 수 있으며, 이 핸들러는 삭제에 성공하면 값이
true
이고 그렇지 않으면
false
bool
을 받아 들여야 합니다.
AuthenticationSubsystem->DeleteUser(THandler<bool>::CreateLambda([this](bool bResponse){ // Your response logic here}));

RegisterStateChangedCallback

RegisterStateChangedCallback() 메서드를 사용해 보조 시스템의 상태가 변경될 때 호출되는 콜백 함수를 할당합니다. 예를 들어, 할당된 함수는 플레이어가 인증에 성공하고 보조 시스템 상태가
Authorized
로 변경되면 실행됩니다.
SDK의 응답은
AuthenticationStateChangedResponse
를 수신해야 하는 응답 핸들러에서 처리할 수 있습니다.
AuthenticationSubsystem->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 );