跳转到主要内容

游客关联

使用游客账号登录。

URL确认

此API使用 service-account.playnanoo.com 域名。

API信息

  • URL: https://service-account.playnanoo.com/api/v20240401/guest/signin
  • Method: PUT
  • 需要认证: 否

请求参数

参数类型必填说明
linked_idstring必填关联ID(设备唯一ID)
platformstring必填平台 (例如: "aos", "ios")
device_idstring必填设备唯一ID
device_modelstring必填设备型号
device_osstring必填设备OS
device_languagestring必填设备语言 (例如: "KO", "EN")

响应数据

Res类

字段类型说明
TokenFSerializeTokenDataToken信息
PlayerFSerializePlayerData玩家信息

FSerializeTokenData 结构

字段类型说明
AccessTokenFString访问Token
RefreshTokenFString刷新Token

FSerializePlayerData 结构

字段类型说明
UserUniqueIDFString用户唯一ID
OpenIDFStringOpen ID
NicknameFString昵称
LinkedIDFString关联ID
LinkedTypeFString关联类型
PurchaseCountint32购买次数
PurchaseCurrencyCodeFString购买货币代码
PurchaseTotalPricedouble总购买金额
PurchaseVoidedCountint32退款次数
PurchaseVoidedCurrencyCodeFString退款货币代码
PurchaseVoidedTotalPricedouble总退款金额
CountryFString国家
TimezoneFString时区
Offsetint32时间偏移
JoinPeriodint32注册时长

代码示例

void UMyGame::GuestSignin()
{
FString DeviceId = FPlatformMisc::GetDeviceId();

// 플레이어 정보가 포함된 요청 바디 생성
TSharedPtr<FJsonObject> Body = FPlayNANOOHelper::CreateRequestBody();
Body->SetStringField(TEXT("linked_id"), DeviceId);

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

// HTTP 요청
TSharedRef<IHttpRequest> Request = FHttpModule::Get().CreateRequest();
Request->SetURL(TEXT("https://service-account.playnanoo.com/api/v20240401/guest/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))
{
// 토큰 정보
const TSharedPtr<FJsonObject>* TokenObject;
if (JsonObject->TryGetObjectField(TEXT("Token"), TokenObject))
{
FString AccessToken;
(*TokenObject)->TryGetStringField(TEXT("AccessToken"), AccessToken);
UE_LOG(LogTemp, Log, TEXT("게스트 로그인 성공"));
}

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

Request->ProcessRequest();
}
获取设备信息

可以使用FPlatformMisc类来获取设备信息。