본문으로 건너뛰기

소셜 로그인

소셜 계정(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()를 사용하여 생성할 수 있습니다.