안드로이드 가입 및 인증
외부 브라우저를 통한 Apple OAuth 로그인 처리입니다. Android에서 Apple 로그인을 지원합니다.
동작 방식
- PlayNANOO 서버에서 Apple OAuth URL 획득
- 외부 브라우저에서 Apple 계정 로그인
- Deep Link로 token 수신
- 토큰으로 계정 등록(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
}
참조
- 계정 타입 값:
PN_ACCOUNT_APPLE_ID = "APPLE ID"- 자세한 정보는 기타 > 계정 타입 정보 참조 - 회원 전환: 비회원 연동 > 회원 전환 문서 참조