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_token | string | 필수 | 소셜 로그인 토큰 (Apple ID Token) |
| account_type | string | 필수 | 계정 타입 (PN_ACCOUNT_APPLE_ID = "APPLE ID") |
응답 데이터
Res 구조체
| 필드 | 타입 | 설명 |
|---|---|---|
| Token | FSerializeTokenData | 토큰 정보 |
| Player | FSerializePlayerData | 플레이어 정보 |
FSerializeTokenData 구조
| 필드 | 타입 | 설명 |
|---|---|---|
| AccessToken | FString | 액세스 토큰 |
| RefreshToken | FString | 리프레시 토큰 |
FSerializePlayerData 구조
| 필드 | 타입 | 설명 |
|---|---|---|
| UserUniqueID | FString | 사용자 고유 ID |
| OpenID | FString | 오픈 ID |
| Nickname | FString | 닉네임 |
| LinkedID | FString | 연동 ID |
| LinkedType | FString | 연동 타입 |
| PurchaseCount | int32 | 구매 횟수 |
| PurchaseCurrencyCode | FString | 구매 통화 코드 |
| PurchaseTotalPrice | double | 총 구매 금액 |
| PurchaseVoidedCount | int32 | 환불 횟수 |
| PurchaseVoidedCurrencyCode | FString | 환불 통화 코드 |
| PurchaseVoidedTotalPrice | double | 총 환불 금액 |
| Country | FString | 국가 |
| Timezone | FString | 타임존 |
| Offset | int32 | 시간 오프셋 |
| JoinPeriod | int32 | 가입 기간 |
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"
}
참조
- 계정 타입 값:
PN_ACCOUNT_APPLE_ID = "APPLE ID"- 자세한 정보는 기타 > 계정 타입 정보 참조 - 회원 전환: 비회원 연동 > 회원 전환 문서 참조
Online Subsystem Apple
Unreal Engine의 Online Subsystem Apple을 사용하려면 프로젝트 설정에서 활성화하고 적절한 설정을 해야 합니다. 자세한 내용은 Unreal Engine 공식 문서를 참조하세요.