본문으로 건너뛰기

iOS 가입 및 인증

애플 아이디를 활용하여 회원 가입 및 인증을 합니다.

URL 확인

이 API는 service-account.playnanoo.com 도메인을 사용합니다.

애플 인증 플러그인 등록

Unreal Engine의 Online Subsystem Apple을 활용하거나 서드파티 플러그인을 사용합니다.

API 정보

  • URL: https://service-account.playnanoo.com/api/v20240101/social/signin
  • Method: PUT
  • 인증 필요: 아니오

요청 파라미터

파라미터타입필수설명
account_tokenstring필수소셜 로그인 토큰 (Apple ID Token)
account_typestring필수계정 타입 (PN_ACCOUNT_APPLE_ID = "APPLE ID")

응답 데이터

Res 구조체

필드타입설명
TokenFSerializeTokenData토큰 정보
PlayerFSerializePlayerData플레이어 정보

FSerializeTokenData 구조

필드타입설명
AccessTokenFString액세스 토큰
RefreshTokenFString리프레시 토큰

FSerializePlayerData 구조

필드타입설명
UserUniqueIDFString사용자 고유 ID
OpenIDFString오픈 ID
NicknameFString닉네임
LinkedIDFString연동 ID
LinkedTypeFString연동 타입
PurchaseCountint32구매 횟수
PurchaseCurrencyCodeFString구매 통화 코드
PurchaseTotalPricedouble총 구매 금액
PurchaseVoidedCountint32환불 횟수
PurchaseVoidedCurrencyCodeFString환불 통화 코드
PurchaseVoidedTotalPricedouble총 환불 금액
CountryFString국가
TimezoneFString타임존
Offsetint32시간 오프셋
JoinPeriodint32가입 기간

Unreal C++ 구현

// AppleSignInExample.h
#pragma once

#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "AppleSignInExample.generated.h"

UCLASS()
class YOURPROJECT_API AAppleSignInExample : public AActor
{
GENERATED_BODY()

public:
AAppleSignInExample();

UFUNCTION(BlueprintCallable, Category = "PlayNANOO|Account")
void SignIn();

private:
void OnAppleSignInComplete(const FString& IdToken);
void SocialSignin(const FString& Token);
};

// AppleSignInExample.cpp
#include "AppleSignInExample.h"
#include "OnlineSubsystem.h"
#include "OnlineSubsystemApple.h"
#include "Interfaces/OnlineIdentityInterface.h"

AAppleSignInExample::AAppleSignInExample()
{
PrimaryActorTick.bCanEverTick = false;
}

void AAppleSignInExample::SignIn()
{
IOnlineSubsystem* OnlineSubsystem = IOnlineSubsystem::Get(APPLE_SUBSYSTEM);
if (OnlineSubsystem)
{
IOnlineIdentityPtr Identity = OnlineSubsystem->GetIdentityInterface();
if (Identity.IsValid())
{
FOnLoginCompleteDelegate LoginDelegate = FOnLoginCompleteDelegate::CreateLambda(
[this](int32 LocalUserNum, bool bWasSuccessful, const FUniqueNetId& UserId, const FString& Error)
{
if (bWasSuccessful)
{
// Apple ID Token 획득
IOnlineSubsystem* OnlineSubsystem = IOnlineSubsystem::Get(APPLE_SUBSYSTEM);
if (OnlineSubsystem)
{
IOnlineIdentityPtr Identity = OnlineSubsystem->GetIdentityInterface();
if (Identity.IsValid())
{
FString IdToken = Identity->GetAuthToken(LocalUserNum);
OnAppleSignInComplete(IdToken);
}
}
}
else
{
UE_LOG(LogTemp, Error, TEXT("Apple 인증 실패: %s"), *Error);
}
}
);

Identity->AddOnLoginCompleteDelegate_Handle(0, LoginDelegate);
Identity->Login(0, FOnlineAccountCredentials());
}
}
}

void AAppleSignInExample::OnAppleSignInComplete(const FString& IdToken)
{
// SocialSignin API 호출
SocialSignin(IdToken);
}

void AAppleSignInExample::SocialSignin(const FString& Token)
{
// SocialSignIn(Token, TEXT("APPLE ID"));
UE_LOG(LogTemp, Log, TEXT("Apple ID Token: %s"), *Token);
}

사용 방법

1. Apple 로그인 시작

void UYourClass::StartAppleSignIn()
{
AAppleSignInExample* AppleSignIn = GetWorld()->SpawnActor<AAppleSignInExample>();
if (AppleSignIn)
{
AppleSignIn->SignIn();
}
}

2. 토큰으로 계정 연동

인증 완료 후 SocialSignin 메소드에서 받은 token으로 PlayNANOO API를 호출합니다:

신규 로그인 (SocialSignIn)

void UYourClass::SocialSignIn(const FString& Token, const FString& AccountType)
{
// Apple 계정으로 처음 로그인
// AccountType: "APPLE ID"
}
참조
Online Subsystem Apple

Unreal Engine의 Online Subsystem Apple을 사용하려면 프로젝트 설정에서 활성화하고 적절한 설정을 해야 합니다. 자세한 내용은 Unreal Engine 공식 문서를 참조하세요.