본문으로 건너뛰기

회원 전환

게스트 계정을 소셜 계정으로 연동합니다.

URL 확인

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

API 정보

  • URL: https://service-account.playnanoo.com/api/v20240401/social/change
  • Method: PUT
  • 인증 필요: 예

요청 파라미터

파라미터타입필수설명
account_tokenstring필수소셜 계정 토큰
account_typestring필수소셜 계정 타입 (예: "google", "facebook", "apple")
platformstring필수플랫폼 (예: "aos", "ios")
device_idstring필수기기 고유 ID
device_modelstring필수기기 모델명
device_osstring필수기기 OS
device_languagestring필수기기 언어 (예: "KO", "EN")

응답 데이터

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가입 기간

코드 예제

void UMyGame::ChangeSocialAccount(const FString& AccessToken, const FString& AccountToken, const FString& AccountType)
{
// 플레이어 정보가 포함된 요청 바디 생성
TSharedPtr<FJsonObject> Body = FPlayNANOOHelper::CreateRequestBody();
Body->SetStringField(TEXT("account_token"), AccountToken);
Body->SetStringField(TEXT("account_type"), AccountType);

// JSON 문자열 변환
FString JsonBody = FPlayNANOOHelper::ToJsonString(Body);

// HTTP 요청
TSharedRef<IHttpRequest> Request = FHttpModule::Get().CreateRequest();
Request->SetURL(TEXT("https://service-account.playnanoo.com/api/v20240401/social/change"));
Request->SetVerb(TEXT("PUT"));
FPlayNANOOHelper::SetCommonHeaders(Request, true); // 인증 토큰 포함
Request->SetContentAsString(JsonBody);

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 NewAccessToken;
(*TokenObject)->TryGetStringField(TEXT("AccessToken"), NewAccessToken);
UE_LOG(LogTemp, Log, TEXT("소셜 계정 연동 성공"));
}

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

Request->ProcessRequest();
}
소셜 계정 타입

지원되는 account_type: "google", "facebook", "apple"