본문으로 건너뛰기

토큰 갱신

리프레시 토큰을 사용하여 새로운 액세스 토큰을 발급받습니다.

URL 확인

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

API 정보

  • URL: https://service-account.playnanoo.com/api/v20240401/token/refresh
  • Method: PUT
  • 인증 필요: 아니오

요청 파라미터

파라미터타입필수설명
refresh_tokenstring필수리프레시 토큰
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::RefreshToken(const FString& RefreshToken)
{
// 플레이어 정보가 포함된 요청 바디 생성
TSharedPtr<FJsonObject> Body = FPlayNANOOHelper::CreateRequestBody();
Body->SetStringField(TEXT("refresh_token"), RefreshToken);

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

// HTTP 요청
TSharedRef<IHttpRequest> Request = FHttpModule::Get().CreateRequest();
Request->SetURL(TEXT("https://service-account.playnanoo.com/api/v20240401/token/refresh"));
Request->SetVerb(TEXT("PUT"));
FPlayNANOOHelper::SetCommonHeaders(Request, false); // 인증 토큰 불필요
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 Nickname;
(*PlayerObject)->TryGetStringField(TEXT("Nickname"), Nickname);
UE_LOG(LogTemp, Log, TEXT("Nickname: %s"), *Nickname);
}
}
}
});

Request->ProcessRequest();
}
토큰 갱신 시기

액세스 토큰 만료 시 401 Unauthorized 응답을 받으면 리프레시 토큰으로 새 액세스 토큰을 발급받으세요.