소셜 로그인
소셜 계정(Google, Facebook, Apple 등)으로 로그인합니다.
URL 확인
이 API는 service-account.playnanoo.com 도메인을 사용합니다.
API 정보
- URL:
https://service-account.playnanoo.com/api/v20240101/social/signin - Method:
PUT - 인증 필요: 아니오
요청 파라미터
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| request_uuid | FString | 필수 | 요청 고유 ID (UUID) |
| account_type | FString | 필수 | 소셜 계정 타입 (예: "google", "facebook", "apple") |
| account_token | FString | 필수 | 소셜 계정 액세스 토큰 |
| platform | FString | 필수 | 플랫폼 (예: "aos", "ios") - 자동 포함 |
| device_id | FString | 필수 | 기기 고유 ID - 자동 포함 |
| device_model | FString | 필수 | 기기 모델명 - 자동 포함 |
| device_os | FString | 필수 | 기기 OS - 자동 포함 |
| device_language | FString | 필수 | 기기 언어 (예: "KO", "EN") - 자동 포함 |
자동 포함되는 기기 정보
FPlayNANOOHelper::CreateRequestBody()를 사용하면 platform, device_id, device_model, device_os, device_language가 자동으로 포함됩니다.
응답 데이터
FSocialSigninResponse
| 필드 | 타입 | 설명 |
|---|---|---|
| Token | FTokenData | 토큰 정보 |
| Player | FPlayerData | 플레이어 정보 |
FTokenData
| 필드 | 타입 | 설명 |
|---|---|---|
| AccessToken | FString | 액세스 토큰 |
| RefreshToken | FString | 리프레시 토큰 |
FPlayerData
| 필드 | 타입 | 설명 |
|---|---|---|
| UserUniqueID | FString | 사용자 고유 ID |
| OpenID | FString | 오픈 ID |
| Nickname | FString | 닉네임 |
| LinkedID | FString | 연동 ID |
| LinkedType | FString | 연동 타입 |
| PurchaseCount | int32 | 구매 횟수 |
| PurchaseCurrencyCode | FString | 구매 통화 코드 |
| PurchaseTotalPrice | double | 총 구매 금액 |
| Country | FString | 국가 |
| Timezone | FString | 타임존 |
| Offset | int32 | 시간 오프셋 |
| JoinPeriod | int32 | 가입 기간 |
코드 예제
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 | 설명 | 필요한 토큰 |
|---|---|---|
| Google 계정 | Google OAuth2 Access Token | |
| Facebook 계정 | Facebook Access Token | |
| apple | Apple 계정 | Apple ID Token |
소셜 로그인 SDK
각 소셜 플랫폼의 로그인을 구현하려면 해당 플랫폼의 SDK나 플러그인이 필요합니다.
request_uuid
request_uuid는 각 로그인 요청을 고유하게 식별하기 위한 UUID입니다. FGuid::NewGuid().ToString()를 사용하여 생성할 수 있습니다.