본문으로 건너뛰기

회원 전환

게스트 계정을 소셜 계정으로 연동하는 API입니다.

URL 확인

이 API는 service-account.playnanoo.com 도메인을 사용합니다.

API 정보

  • URL: https://service-account.playnanoo.com/api/v20240401/social/change
  • Method: PUT
  • 인증 필요: 예

요청 파라미터

파라미터타입필수설명
account_tokenstring필수소셜 계정 토큰
account_typestring필수소셜 계정 타입 (예: "google", "facebook", "apple")
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 SocialChange
{
static string path = "https://service-account.playnanoo.com/api/v20240401/social/change";

[Serializable]
public class Req : DeviceInfo
{
public string account_token;
public string account_type;

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

yield return HttpClient.Send<Req, Res>(
UnityWebRequest.kHttpVerbPUT,
path,
requireToken: true,
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 ChangeSocialAccount(string googleToken)
{
SocialChange.Req req = new SocialChange.Req();

StartCoroutine(req.Send(
account_token: googleToken,
account_type: "google",
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}");
},
onError: (error) =>
{
Debug.LogError($"소셜 계정 연동 실패: [{error.ErrorCode}] [{error.Message}]");
}
));
}
소셜 계정 타입

지원되는 account_type 값:

  • "google": Google 계정
  • "facebook": Facebook 계정
  • "apple": Apple 계정