跳转到主要内容

社交登录

使用社交账号(Google、Facebook、Apple等)登录。

URL确认

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

API信息

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

请求参数

参数类型必填说明
request_uuidFString必填请求唯一ID (UUID)
account_typeFString必填社交账号类型 (例如: "google", "facebook", "apple")
account_tokenFString必填社交账号访问Token
platformFString必填平台 (例如: "aos", "ios") - 自动包含
device_idFString必填设备唯一ID - 自动包含
device_modelFString必填设备型号 - 自动包含
device_osFString必填设备OS - 自动包含
device_languageFString必填设备语言 (例如: "KO", "EN") - 自动包含
自动包含的设备信息

使用FPlayNANOOHelper::CreateRequestBody()时,platform、device_id、device_model、device_os、device_language将自动包含。

响应数据

FSocialSigninResponse

字段类型说明
TokenFTokenDataToken信息
PlayerFPlayerData玩家信息

FTokenData

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

FPlayerData

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

代码示例

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说明所需Token
googleGoogle 账号Google OAuth2 Access Token
facebookFacebook 账号Facebook Access Token
appleApple 账号Apple ID Token
社交登录SDK

要实现各社交平台的登录,需要相应平台的SDK或插件。

request_uuid

request_uuid是用于唯一标识每个登录请求的UUID。可以使用FGuid::NewGuid().ToString()生成。