본문으로 건너뛰기

소셜 로그인

소셜 계정(Google, Facebook, Apple 등)으로 로그인합니다.

URL 확인

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

API 정보

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

요청 파라미터

파라미터타입필수설명
request_uuidFString필수요청 고유 ID (UUID)
account_typeFString필수소셜 계정 타입 (예: "google", "facebook", "apple")
account_tokenFString필수소셜 계정 액세스 토큰
platformFString필수플랫폼 (예: "aos", "ios") - 자동 포함
device_idFString필수기기 고유 ID - 자동 포함
device_modelFString필수기기 모델명 - 자동 포함
device_osFString필수기기 OS - 자동 포함
device_languageFString필수기기 언어 (예: "KO", "EN") - 자동 포함
자동 포함되는 기기 정보

FPlayNANOOHelper::CreateRequestBody()를 사용하면 platform, device_id, device_model, device_os, device_language가 자동으로 포함됩니다.

응답 데이터

FSocialSigninResponse

필드타입설명
TokenFTokenData토큰 정보
PlayerFPlayerData플레이어 정보

FTokenData

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

FPlayerData

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

코드 예제

Google 로그인

#include "PlayNANOOHelper.h"
#include "HttpModule.h"
#include "Interfaces/IHttpRequest.h"
#include "Interfaces/IHttpResponse.h"

void UMyGame::GoogleSignin(const FString& GoogleAccessToken)
{
FString RequestUUID = FGuid::NewGuid().ToString();

// 요청 데이터 생성 (기기 정보는 자동으로 포함됨)
TSharedPtr<FJsonObject> Body = FPlayNANOOHelper::CreateRequestBody();
Body->SetStringField(TEXT("request_uuid"), RequestUUID);
Body->SetStringField(TEXT("account_type"), TEXT("google"));
Body->SetStringField(TEXT("account_token"), GoogleAccessToken);

// JSON 문자열 변환
FString JsonBody;
TSharedRef<TJsonWriter<>> Writer = TJsonWriterFactory<>::Create(&JsonBody);
FJsonSerializer::Serialize(Body.ToSharedRef(), Writer);

// HTTP 요청
TSharedRef<IHttpRequest, ESPMode::ThreadSafe> Request = FHttpModule::Get().CreateRequest();
Request->SetURL(TEXT("https://service-account.playnanoo.com/api/v20240101/social/signin"));
Request->SetVerb(TEXT("PUT"));
Request->SetContentAsString(JsonBody);

// 공통 헤더 설정 (로그인 API이므로 인증 토큰 불필요)
FPlayNANOOHelper::SetCommonHeaders(Request, false);

Request->OnProcessRequestComplete().BindLambda(
[](FHttpRequestPtr Req, FHttpResponsePtr Res, bool bSuccess)
{
if (bSuccess && Res.IsValid())
{
TSharedPtr<FJsonObject> JsonObject;
TSharedRef<TJsonReader<>> Reader = TJsonReaderFactory<>::Create(Res->GetContentAsString());

if (FJsonSerializer::Deserialize(Reader, JsonObject))
{
// 토큰 정보
const TSharedPtr<FJsonObject>* TokenObject;
if (JsonObject->TryGetObjectField(TEXT("Token"), TokenObject))
{
FString AccessToken;
(*TokenObject)->TryGetStringField(TEXT("AccessToken"), AccessToken);
UE_LOG(LogTemp, Log, TEXT("Google 로그인 성공"));
}

// 플레이어 정보
const TSharedPtr<FJsonObject>* PlayerObject;
if (JsonObject->TryGetObjectField(TEXT("Player"), PlayerObject))
{
FString UserUniqueID, Nickname;
(*PlayerObject)->TryGetStringField(TEXT("UserUniqueID"), UserUniqueID);
(*PlayerObject)->TryGetStringField(TEXT("Nickname"), Nickname);
UE_LOG(LogTemp, Log, TEXT("Nickname: %s"), *Nickname);
}
}
}
});

Request->ProcessRequest();
}

지원하는 소셜 계정 타입

account_type설명필요한 토큰
googleGoogle 계정Google OAuth2 Access Token
facebookFacebook 계정Facebook Access Token
appleApple 계정Apple ID Token
소셜 로그인 SDK

각 소셜 플랫폼의 로그인을 구현하려면 해당 플랫폼의 SDK나 플러그인이 필요합니다.

request_uuid

request_uuid는 각 로그인 요청을 고유하게 식별하기 위한 UUID입니다. FGuid::NewGuid().ToString()를 사용하여 생성할 수 있습니다.