본문으로 건너뛰기

소셜 로그인

소셜 계정(Google, Facebook, Apple 등)으로 로그인하는 API입니다.

URL 확인

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

API 정보

  • URL: https://service-account.playnanoo.com/api/v20240101/social/signin
  • Method: PUT
  • 인증 필요: 아니오

요청 파라미터

파라미터타입필수설명
request_uuidstring필수요청 고유 ID (UUID)
account_typestring필수소셜 계정 타입 (예: "google", "facebook", "apple")
account_tokenstring필수소셜 계정 액세스 토큰
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 SocialSignin
{
static string path = "https://service-account.playnanoo.com/api/v20240101/social/signin";

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

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

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;
}
}

사용 예제

Google 로그인

public void GoogleSignIn(string googleAccessToken)
{
SocialSignin.Req req = new SocialSignin.Req();

StartCoroutine(req.Send(
request_uuid: Guid.NewGuid().ToString(),
account_type: "google",
account_token: googleAccessToken,
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}");
},
onError: (error) =>
{
Debug.LogError($"Google 로그인 실패: [{error.ErrorCode}] [{error.Message}]");
}
));
}

Facebook 로그인

public void FacebookSignIn(string facebookAccessToken)
{
SocialSignin.Req req = new SocialSignin.Req();

StartCoroutine(req.Send(
request_uuid: Guid.NewGuid().ToString(),
account_type: "facebook",
account_token: facebookAccessToken,
onSuccess: res =>
{
Debug.Log("Facebook 로그인 성공!");
Debug.Log($"UserUniqueID: {res.Player.UserUniqueID}");
},
onError: (error) =>
{
Debug.LogError($"Facebook 로그인 실패: [{error.ErrorCode}] [{error.Message}]");
}
));
}

Apple 로그인

public void AppleSignIn(string appleIdToken)
{
SocialSignin.Req req = new SocialSignin.Req();

StartCoroutine(req.Send(
request_uuid: Guid.NewGuid().ToString(),
account_type: "apple",
account_token: appleIdToken,
onSuccess: res =>
{
Debug.Log("Apple 로그인 성공!");
Debug.Log($"UserUniqueID: {res.Player.UserUniqueID}");
},
onError: (error) =>
{
Debug.LogError($"Apple 로그인 실패: [{error.ErrorCode}] [{error.Message}]");
}
));
}

지원하는 소셜 계정 타입

account_type설명필요한 토큰
googleGoogle 계정Google OAuth2 Access Token
facebookFacebook 계정Facebook Access Token
appleApple 계정Apple ID Token
소셜 로그인 SDK

각 소셜 플랫폼의 로그인을 구현하려면 해당 플랫폼의 SDK가 필요합니다:

request_uuid

request_uuid는 각 로그인 요청을 고유하게 식별하기 위한 UUID입니다. Guid.NewGuid().ToString()를 사용하여 생성할 수 있습니다.