유니티용 now.gg 로그인 모듈을 통해 유니티 내에서 now.gg 로그인을 사용하실 수 있습니다.
방법:
유니티용 now.gg 로그인 모듈은 유니티 패키지 파일 NowGGUnitySdk.unitypackage에 포함되어 있습니다.
Unity 프로젝트에 모듈 추가하기:
NowGGUnitySdk.unitypackage 파일을 선택합니다.Assets/Plugins/Android 디렉터리에 추가합니다.now.gg 로그인 모듈 임포트 및 종속성 추가 후 이제 now.gg 로그인 모듈을 적용하실 수 있습니다.
now.gg 로그인 버튼 에셋은 now.gg SDK 패키지의 Assets/Login 디렉토리에 포함되어 있습니다.
now.gg 로그인을 포함하는 클래스를 생성하고 이를 로그인 프로세스를 시작하는 데 사용할 수 있는 게임 오브젝트에 추가합니다.
이때 다음 두 가지 중 하나를 사용하실 수 있습니다.
해당 프로세스로 now.gg 로그인을 적용하고 유저의 기본 프로필 정보를 가져오실 수 있습니다.
프로세스를 시작하기 위해 아래와 같이 client_id를 사용하여 NowGGLoginSdkManager의 로그인 기능을 호출합니다.
private string CLIENT_ID = "your_client_id";
public void Start()
{
NowGGLoginSdkManager.Instance.OnLoginSuccess += OnLoginSuccess;
NowGGLoginSdkManager.Instance.OnLoginFailed += OnLoginFailed;
}
// 사용자가 로그인 버튼을 클릭하면 이 메서드를 호출하십시오.
public void OnLoginButtonClick()
{
NowGGLoginSdkManager.Instance.Login(CLIENT_ID);
}
private void OnLoginSuccess(string email, string token, string hostUrl)
{
Debug.Log($"Login success with email: {email} and token is: {token}");
}
private void OnLoginFailed(int errorCode, string errorMsg)
{
Debug.Log($"Login failed with error code: {errorCode} and message: {errorMsg}");
}
중요: now.gg 로그인 모듈와 관련된 응답은 OnLoginSuccess 및 OnLoginFailed 콜백 함수를 사용하여 처리하실 수 있습니다.
유저가 성공적으로 로그인하면 OnLoginSuccess 콜백 함수를 통해 유저 이메일과 함께 요청된 토큰을 받게 됩니다.
해당 프로세스를 통해 now.gg 로그인을 적용하고 보다 자세한 유저 및 세션 정보를 가져오실 수 있습니다.
이는 인증 코드를 사용하여 token 및 refresh_token을 생성하는 보다 안전한 프로세스입니다.
아래와 같이 추가 변수 code와 함께 client_id를 사용하여 NowGGLoginSdkManager 클래스의 로그인 함수를 호출합니다.
private string CLIENT_ID = "your_client_id";
public void Start()
{
NowGGLoginSdkManager.Instance.OnLoginSuccess += OnLoginSuccess;
NowGGLoginSdkManager.Instance.OnLoginFailed += OnLoginFailed;
}
// 사용자가 로그인 버튼을 클릭하면 이 메서드를 호출하십시오.
public void OnLoginButtonClick()
{
NowGGLoginSdkManager.Instance.Login(CLIENT_ID, "code");
}
private void OnLoginSuccess(string email, string token, string hostUrl)
{
Debug.Log($"Login success with email: {email} and authorization code is: {token}");
}
private void OnLoginFailed(int errorCode, string errorMsg)
{
Debug.Log($"Login failed with error code: {errorCode} and message: {errorMsg}");
}
중요: now.gg 로그인 모듈와 관련된 응답은 OnLoginSuccess 및 OnLoginFailed 콜백 함수를 사용하여 처리하실 수 있습니다.
유저가 성공적으로 로그인하면 OnLoginSuccess 콜백 함수를 통해 유저 이메일과 함께 요청된 토큰을 받게 됩니다.
로그인이 실패하는 시나리오로 기본 로그인 및 고급 로그인 프로세스 모두에 적용됩니다.
로그인에 실패하면 OnLoginFailed 콜백 함수에서 오류 코드와 오류 메시지를 받게 되며 이후 받은 오류 메시지를 기반으로 해당 오류를 처리하실 수 있습니다.
“No nowGG account present(nowGG 계정이 없습니다)”라는 오류와 함께 로그인이 실패하는 경우 아래와 같이 런타임에 NowGGLoginSdkManager 클래스의 AddNowGGAccount를 호출하여 계정을 추가하실 수 있습니다.
private void OnLoginFailed(int errorCode, string errorMsg)
{
statusText.text = "Login Failed: " + errorMsg;
if (errorMsg.Equals("No nowgg account present") || errorCode == 1)
NowGGLoginSdkManager.Instance.AddNowGGAccount();
}
성공적으로 로그인하면 이제 토큰을 갖게 되며 해당 토큰을 사용하여 유저 프로필 정보를 가져올 수 있습니다.
해당 token을 여기를 참조하여 앱의 백엔드 서버에 사용하고 로그인한 유저의 프로필을 가져오시는 것을 권장해 드립니다.
앱에 백엔드 서버가 없는 경우 다음을 통해 유저 프로필 정보를 호출하실 수 있습니다.
‘기기 내’ API 호출을 통해 로그인한 유저의 프로필 정보를 가져오는 샘플 코드는 데모 프로젝트에서 참조하실 수 있습니다.
예를 들어, 로그인한 유저의 userId를 포함한 유저 프로필 정보를 호출하려면 LoginTokenVerification 클래스의 VerifyToken을 호출하고 TokenVerifyResponse 콜백의 userDataVerified를 통해 필요한 정보를 가져오실 수 있습니다.
아래는 예시입니다.
private void OnLoginSuccess(string email, string token, string hostUrl)
{
Debug.Log($"Login success with email: {email} and token is: {token}");
// 유저 세부 정보를 얻기 위해 토큰을 인증하며 보안 강화를 위해 백엔드 서버에서 토큰을 인증하시는 것을 권장해 드립니다.
StartCoroutine(LoginTokenVefication.VerifyToken(token, CLIENT_ID, TokenVerifyResponse));
}
private void TokenVerifyResponse(UserDataVerified userDataVerified)
{
Debug.Log($"User id: {userDataVerified.userId}");
string userId = userDataVerified.userId;
string name = userDataVerified.name;
string email = userDataVerified.email;
string picture = userDataVerified.picture;
}
모듈 데모 프로젝트 내에서도 해당 클래스를 확인하실 수 있습니다.
using System;
using System.Collections;
using UnityEngine;
using UnityEngine.Networking;
public class LoginTokenVerification : MonoBehaviour
{
public static IEnumerator VerifyToken(string token, string client_id, Action tokenVerifyResponse)
{
WWWForm form = new WWWForm();
form.AddField("token_type", "id_token");
form.AddField("token", token);
form.AddField("client_id", client_id);
UnityWebRequest www = UnityWebRequest.Post("https://now.gg/accounts/oauth2/v1/verify-token", form);
yield return www.SendWebRequest();
if (www.result != UnityWebRequest.Result.Success)
{
Debug.Log($"Error in token verification: {www.error}");
}
else
{
Debug.Log($"token verification response: {www.downloadHandler.text}");
TokenVerification tokenVerification = JsonUtility.FromJson(www.downloadHandler.text);
if (tokenVerifyResponse != null)
tokenVerifyResponse(tokenVerification.userData);
}
}
}
[System.Serializable]
public class TokenVerification
{
public string success;
public string code;
[SerializeField] private UserDataVerified decodedData;
public UserDataVerified userData { get { return decodedData; } }
public string msg;
}
[System.Serializable]
public class UserDataVerified
{
public string iss;
public string sub;
public string aud;
public string exp;
public string iat;
public string auth_time;
public string tokenId;
public string sessionId;
public string scope;
public string email;
public string name;
public string picture;
public string mobile;
public string userId;
}
유저 세부 정보가 있으면 해당 정보를 데이터베이스에 저장하고 다음에 유저가 앱을 시작할 때 로그인 프로세스를 건너뛰는 데 사용해야 합니다.
중요:
userDataVerified.userId를 통해 클라이언트에서 userId를 가져올 수 있습니다.설명:
token과 refresh_token을 받습니다.
인증 코드가 있을 시 코드를 앱 백엔드 서버로 보내고 토큰 생성 API를 사용하여 코드를 now.gg 서버와 교환한 뒤 token과 refresh_token을 수령합니다.
token을 사용하여 now.gg API(유저 정보 및 세션 정보)를 호출합니다.token이 만료될 때 새 토큰을 얻으려면 refresh_token을 저장하시기 바랍니다.토큰 수령 후 이를 사용하여 유저 및 세션 정보를 가져오실 수 있습니다.
token이 만료된 경우 토큰 생성 API를 사용하여 refresh_token으로 토큰을 생성하실 수 있습니다.
dev-support@now.gg로 문의해 주시면 신속히 도와드리겠습니다.
유저 계정 서비스
유저 계정 서비스
문서 Rev. 1.0