Skip to main content

Social Login

Log in with social accounts (Google, Facebook, Apple, etc.).

URL Confirmation

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

API Information

  • URL: https://service-account.playnanoo.com/api/v20240101/social/signin
  • Method: PUT
  • Authentication Required: No

Request Parameters

ParameterTypeRequiredDescription
request_uuidFStringRequiredRequest unique ID (UUID)
account_typeFStringRequiredSocial account type (e.g., "google", "facebook", "apple")
account_tokenFStringRequiredSocial account access token
platformFStringRequiredPlatform (e.g., "aos", "ios") - Auto-included
device_idFStringRequiredDevice unique ID - Auto-included
device_modelFStringRequiredDevice model name - Auto-included
device_osFStringRequiredDevice OS - Auto-included
device_languageFStringRequiredDevice language (e.g., "KO", "EN") - Auto-included
Auto-included Device Information

Using FPlayNANOOHelper::CreateRequestBody() automatically includes platform, device_id, device_model, device_os, and device_language.

Response Data

FSocialSigninResponse

FieldTypeDescription
TokenFTokenDataToken information
PlayerFPlayerDataPlayer information

FTokenData

FieldTypeDescription
AccessTokenFStringAccess token
RefreshTokenFStringRefresh token

FPlayerData

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

Code Example

Google Login

#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();

// Create request data (device info is automatically included)
TSharedPtr<FJsonObject> Body = FPlayNANOOHelper::CreateRequestBody();
Body->SetStringField(TEXT("request_uuid"), RequestUUID);
Body->SetStringField(TEXT("account_type"), TEXT("google"));
Body->SetStringField(TEXT("account_token"), GoogleAccessToken);

// Convert to JSON string
FString JsonBody;
TSharedRef<TJsonWriter<>> Writer = TJsonWriterFactory<>::Create(&JsonBody);
FJsonSerializer::Serialize(Body.ToSharedRef(), Writer);

// HTTP request
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);

// Set common headers (no authentication token needed for login 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))
{
// Token information
const TSharedPtr<FJsonObject>* TokenObject;
if (JsonObject->TryGetObjectField(TEXT("Token"), TokenObject))
{
FString AccessToken;
(*TokenObject)->TryGetStringField(TEXT("AccessToken"), AccessToken);
UE_LOG(LogTemp, Log, TEXT("Google login successful"));
}

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

Supported Social Account Types

account_typeDescriptionRequired Token
googleGoogle AccountGoogle OAuth2 Access Token
facebookFacebook AccountFacebook Access Token
appleApple AccountApple ID Token
Social Login SDKs

To implement each social platform login, you need the corresponding platform's SDK or plugin.

request_uuid

request_uuid is a UUID to uniquely identify each login request. It can be generated using FGuid::NewGuid().ToString().