Skip to main content

Token Authentication

Log in with an access token.

URL Confirmation

This API uses the service-account.playnanoo.com domain.

API Information

  • URL: https://service-account.playnanoo.com/api/v20240401/token/signin
  • Method: PUT
  • Authentication Required: Yes

Request Parameters

ParameterTypeRequiredDescription
access_tokenstringRequiredAccess token
platformstringRequiredPlatform (e.g., "aos", "ios")
device_idstringRequiredDevice unique ID
device_modelstringRequiredDevice model name
device_osstringRequiredDevice OS
device_languagestringRequiredDevice language (e.g., "KO", "EN")

Response Data

Res Class

FieldTypeDescription
TokenFSerializeTokenDataToken information
PlayerFSerializePlayerDataPlayer information

FSerializeTokenData Structure

FieldTypeDescription
AccessTokenFStringAccess token
RefreshTokenFStringRefresh token

FSerializePlayerData Structure

FieldTypeDescription
UserUniqueIDFStringUser unique ID
OpenIDFStringOpen ID
NicknameFStringNickname
LinkedIDFStringLinked ID
LinkedTypeFStringLinked type
PurchaseCountint32Purchase count
PurchaseCurrencyCodeFStringPurchase currency code
PurchaseTotalPricedoubleTotal purchase amount
PurchaseVoidedCountint32Refund count
PurchaseVoidedCurrencyCodeFStringRefund currency code
PurchaseVoidedTotalPricedoubleTotal refund amount
CountryFStringCountry
TimezoneFStringTimezone
Offsetint32Time offset
JoinPeriodint32Join period

Code Example

void UMyGame::TokenSignin(const FString& AccessToken)
{
// Create request body with player information
TSharedPtr<FJsonObject> Body = FPlayNANOOHelper::CreateRequestBody();
Body->SetStringField(TEXT("access_token"), AccessToken);

// Convert to JSON string
FString JsonBody = FPlayNANOOHelper::ToJsonString(Body);

// HTTP request
TSharedRef<IHttpRequest> Request = FHttpModule::Get().CreateRequest();
Request->SetURL(TEXT("https://service-account.playnanoo.com/api/v20240401/token/signin"));
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))
{
// Token information
const TSharedPtr<FJsonObject>* TokenObject;
if (JsonObject->TryGetObjectField(TEXT("Token"), TokenObject))
{
FString NewAccessToken;
(*TokenObject)->TryGetStringField(TEXT("AccessToken"), NewAccessToken);
UE_LOG(LogTemp, Log, TEXT("Token login successful"));
}

// Player information
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();
}