본문으로 건너뛰기

비회원 연동

게스트 계정으로 로그인하는 API입니다.

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")
DeviceInfo 상속

이 API의 Req 클래스는 DeviceInfo를 상속받습니다. DeviceInfo의 모든 속성이 자동으로 포함됩니다.

응답 데이터

Res 클래스

필드타입설명
TokenSerializeTokenData토큰 정보
PlayerSerializePlayerData플레이어 정보

SerializeTokenData 구조

필드타입설명
AccessTokenstring액세스 토큰
RefreshTokenstring리프레시 토큰

SerializePlayerData 구조

필드타입설명
UserUniqueIDstring사용자 고유 ID
OpenIDstring오픈 ID
Nicknamestring닉네임
LinkedIDstring연동 ID
LinkedTypestring연동 타입
PurchaseCountint구매 횟수
PurchaseCurrencyCodestring구매 통화 코드
PurchaseTotalPricedouble총 구매 금액
PurchaseVoidedCountint환불 횟수
PurchaseVoidedCurrencyCodestring환불 통화 코드
PurchaseVoidedTotalPricedouble총 환불 금액
Countrystring국가
Timezonestring타임존
Offsetint시간 오프셋
JoinPeriodint가입 기간

Unity C# 구현

BaseResponse 클래스

모든 API 응답의 기본 클래스입니다.

public class BaseResponse
{
public string ErrorCode;
public string Message;
public string WithdrawalKey;
public string BlockKey;
}

필드 설명:

  • ErrorCode: 에러 코드
  • Message: 에러 메시지
  • WithdrawalKey: 탈퇴 유예 상태인 경우 복구에 필요한 키 (탈퇴 유예 중인 계정만 제공)
  • BlockKey: 차단된 계정인 경우 제공되는 키 (차단된 계정만 제공)

게스트 로그인 클래스

using System;
using System.Collections;
using UnityEngine.Networking;

public class GuestSignin
{
static string path = "https://service-account.playnanoo.com/api/v20240401/guest/signin";

[Serializable]
public class Req : DeviceInfo
{
public string linked_id;

public IEnumerator Send(
string linked_id,
Action<Res> onSuccess,
Action<BaseResponse> onError)
{
if (!string.IsNullOrEmpty(linked_id)) this.linked_id = linked_id;

yield return HttpClient.Send<Req, Res>(
UnityWebRequest.kHttpVerbPUT,
path,
requireToken: false,
body: this,
onSuccess: onSuccess,
onError: onError
);
}
}

[Serializable]
public class Res : BaseResponse
{
public SerializeTokenData Token;
public SerializePlayerData Player;
}

[Serializable]
public class SerializeTokenData
{
public string AccessToken;
public string RefreshToken;
}

[Serializable]
public class SerializePlayerData
{
public string UserUniqueID;
public string OpenID;
public string Nickname;
public string LinkedID;
public string LinkedType;
public int PurchaseCount;
public string PurchaseCurrencyCode;
public double PurchaseTotalPrice;
public int PurchaseVoidedCount;
public string PurchaseVoidedCurrencyCode;
public double PurchaseVoidedTotalPrice;
public string Country;
public string Timezone;
public int Offset;
public int JoinPeriod;
}
}

사용 예제

public void GuestLogin()
{
GuestSignin.Req req = new GuestSignin.Req();

StartCoroutine(req.Send(
linked_id: SystemInfo.deviceUniqueIdentifier,
onSuccess: res =>
{
// 토큰
Debug.Log($"AccessToken: {res.Token.AccessToken}");
Debug.Log($"RefreshToken: {res.Token.RefreshToken}");

// 플레이어 정보
Debug.Log($"UserUniqueID: {res.Player.UserUniqueID}");
Debug.Log($"OpenID: {res.Player.OpenID}");
Debug.Log($"Nickname: {res.Player.Nickname}");
Debug.Log($"LinkedID: {res.Player.LinkedID}");
Debug.Log($"LinkedType: {res.Player.LinkedType}");
Debug.Log($"Country: {res.Player.Country}");

// 구매 관련
Debug.Log($"PurchaseCount: {res.Player.PurchaseCount}");
Debug.Log($"PurchaseTotalPrice: {res.Player.PurchaseTotalPrice}");
Debug.Log($"PurchaseCurrencyCode: {res.Player.PurchaseCurrencyCode}");
Debug.Log($"Timezone: {res.Player.Timezone}");
Debug.Log($"Offset: {res.Player.Offset}");
Debug.Log($"JoinPeriod: {res.Player.JoinPeriod}");
},
onError: (error) =>
{
Debug.LogError($"게스트 로그인 실패: [{error.ErrorCode}] [{error.Message}]");
}
));
}
기기 정보 얻기

Unity에서는 SystemInfo 클래스를 사용하여 기기 정보를 얻을 수 있습니다:

  • SystemInfo.deviceUniqueIdentifier: 기기 고유 ID
  • SystemInfo.deviceModel: 기기 모델명
  • SystemInfo.operatingSystem: 운영체제 정보