본문으로 건너뛰기

안드로이드 가입 및 인증

외부 브라우저를 통한 Apple OAuth 로그인 처리입니다. Android에서 Apple 로그인을 지원합니다.

동작 방식
  1. PlayNANOO 서버에서 Apple OAuth URL 획득
  2. 외부 브라우저에서 Apple 계정 로그인
  3. Deep Link로 token 수신
  4. 토큰으로 계정 등록(SocialSignIn) 또는 회원 전환(SocialChange) API 호출

Unity 구현

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

/// <summary>
/// Apple Sign In (Android/iOS)
/// 외부 브라우저를 통한 Apple OAuth 로그인 처리
/// </summary>
public class iOSSignin : MonoBehaviour
{
[Serializable]
private class AppleUrlResponse : BaseResponse
{
public string Url;
}

void Start()
{
Application.deepLinkActivated += OnDeepLink;
}

void OnDestroy()
{
Application.deepLinkActivated -= OnDeepLink;
}

/// <summary>
/// Apple 로그인 시작
/// </summary>
public void Sign_in_with_Apple()
{
StartCoroutine(GetAppleUrlAndOpen());
}

private IEnumerator GetAppleUrlAndOpen()
{
yield return HttpClient.Send<object, AppleUrlResponse>(
UnityWebRequest.kHttpVerbGET,
"https://service-account.playnanoo.com/api/apple/url",
requireToken: false,
body: null,
onSuccess: (response) =>
{
if (!string.IsNullOrEmpty(response.Url))
{
Application.OpenURL(response.Url);
}
},
onError: (error) => { }
);
}

private void OnDeepLink(string url)
{
if (url.Contains("type=apple"))
{
string status = ExtractParam(url, "status");
string token = ExtractParam(url, "token");

if (status == "success" && !string.IsNullOrEmpty(token))
{
SendTokenToServer(token);
}
}
}

private void SendTokenToServer(string token)
{
//token 값으로 SocialChange 또는 SocialSignIn 진행.
//SocialChange(token, PN_ACCOUNT_APPLE_ID);
// or
//SocialSignIn(token, PN_ACCOUNT_APPLE_ID);
}

private string ExtractParam(string url, string key)
{
string search = key + "=";
if (url.Contains(search))
{
int start = url.IndexOf(search) + search.Length;
int end = url.IndexOf("&", start);
if (end == -1) end = url.Length;
return url.Substring(start, end - start);
}
return null;
}
}

사용 방법

1. Apple 로그인 시작

Sign_in_with_Apple();

외부 브라우저가 열리고 사용자가 Apple 계정으로 로그인합니다.

2. 토큰으로 계정 연동

인증 완료 후 SendTokenToServer 메소드에서 받은 token으로 PlayNANOO API를 호출합니다:

신규 로그인 (SocialSignIn)

public void SocialSignIn(string token, string accountType)
{
// Apple 계정으로 처음 로그인
//accountType : PN_ACCOUNT_APPLE_ID
}

회원 전환 (SocialChange)

public void SocialChange(string token, string accountType)
{
// 비회원에서 Apple 회원으로 전환
//accountType : PN_ACCOUNT_APPLE_ID
}
참조