Facebook 및 Unity를 사용한 PlayFab 인증 설정
이 자습서는 Facebook 및 Unity를 사용한 PlayFab 인증의 예제를 안내합니다.
요구 사항
- Unity 5 + 및 만든 프로젝트.
- 테스트용 Facebook 계정.
- 프로젝트에 가져온 Facebook SDK.
- 등록된 PlayFab 타이틀.
- 구성된 타이틀 참조로 프로젝트에 가져온 PlayFab SDK.
- 로그인 기본 사항 및 모범 사례에 대한 지식.
구현
Facebook 응용 프로그램 등록
Facebook 개발자 포털로 이동하여 시작:
- 마우스를 내 앱 단추 위로 이동합니다.
- 아래 그림과 같이 새 앱 추가를 선택합니다.
새 응용 프로그램 팝업이 열립니다.
- 응용 프로그램 이름을 입력합니다.
- 연락처 전자 메일을 입력합니다.
참고 항목
아래 그림과 같이 고유한응용 프로그램 이름 및 전자 메일을 입력했는지 확인합니다.
- 설정 탭으로 이동합니다.
- 그런 다음 기본 하위 탭으로 이동합니다.
-
응용 프로그램 ID를 찾습니다.
- 쉽게 액세스할 수 있는 안전한 곳에 복사합니다. 나중에 Facebook SDK를 설정하기 위해 사용할 것입니다.
Facebook 액세스 토큰 도구로 이동합니다.
- 목록에서 앱을 찾습니다.
- 할당된 사용자 토큰이 있는지 확인합니다.
참고 항목
지정된 사용자 토큰이 없는 경우 화면 오른쪽에 있는 버튼을 사용하여 사용자 토큰을 요청하세요. 새 사용자 토큰이 필요할 때마다 이 페이지를 참조하세요. PC에서 테스트하는 동안 권한 부여에 실패하면 토큰 만료 때문일 가능성이 가장 높습니다. 페이지를 새로 고침하여 새 사용자 토큰을 받은 다음 다시 테스트합니다.
- Application Manager 페이지에서 + 제품 추가로 이동합니다.
- 페이스북 로그인 항목을 찾고 시작을 선택합니다.
로그인 제품 설정 페이지가 열립니다.
- 로그인 제품 설정 페이지가 열려 있는지 확인합니다.
- 클라이언트 OAuth 및 Web OAuth 모두 켜져 있는지 확인합니다.
Facebook SDK 설정
Unity 프로젝트 열기:
- 파일 메뉴에서 Facebook을 선택합니다.
- 그런 다음 설정 편집을 선택합니다.
Inspector 창에 현재 Facebook SDK 구성이 표시됩니다.
- 아래 그림과 같이 해당 필드에 응용 프로그램 ID를 입력합니다.
단순 인증 스크립트
다음 그림과 같이 새 게임 개체를 만들고 PlayfabFacebookAuthExample로 이름을 바꿉니다.
- PlayfabFacebookAuthExample.cs라는 스크립트를 만듭니다.
- 아래 그림과 같이 게임 개체를 추가합니다.
PlayfabFacebookAuthExample.cs
안에 다음 코드를 넣습니다.
// Import statements introduce all the necessary classes for this example.
using Facebook.Unity;
using PlayFab;
using PlayFab.ClientModels;
using UnityEngine;
using LoginResult = PlayFab.ClientModels.LoginResult;
public class PlayfabFacebookAuthExample : MonoBehaviour
{
// holds the latest message to be displayed on the screen
private string _message;
public void Start()
{
SetMessage("Initializing Facebook..."); // logs the given message and displays it on the screen using OnGUI method
// This call is required before any other calls to the Facebook API. We pass in the callback to be invoked once initialization is finished
FB.Init(OnFacebookInitialized);
}
private void OnFacebookInitialized()
{
SetMessage("Logging into Facebook...");
// Once Facebook SDK is initialized, if we are logged in, we log out to demonstrate the entire authentication cycle.
if (FB.IsLoggedIn)
FB.LogOut();
// We invoke basic login procedure and pass in the callback to process the result
FB.LogInWithReadPermissions(null, OnFacebookLoggedIn);
}
private void OnFacebookLoggedIn(ILoginResult result)
{
// If result has no errors, it means we have authenticated in Facebook successfully
if (result == null || string.IsNullOrEmpty(result.Error))
{
SetMessage("Facebook Auth Complete! Access Token: " + AccessToken.CurrentAccessToken.TokenString + "\nLogging into PlayFab...");
/*
* We proceed with making a call to PlayFab API. We pass in current Facebook AccessToken and let it create
* and account using CreateAccount flag set to true. We also pass the callback for Success and Failure results
*/
PlayFabClientAPI.LoginWithFacebook(new LoginWithFacebookRequest { CreateAccount = true, AccessToken = AccessToken.CurrentAccessToken.TokenString},
OnPlayfabFacebookAuthComplete, OnPlayfabFacebookAuthFailed);
}
else
{
// If Facebook authentication failed, we stop the cycle with the message
SetMessage("Facebook Auth Failed: " + result.Error + "\n" + result.RawResult, true);
}
}
// When processing both results, we just set the message, explaining what's going on.
private void OnPlayfabFacebookAuthComplete(LoginResult result)
{
SetMessage("PlayFab Facebook Auth Complete. Session ticket: " + result.SessionTicket);
}
private void OnPlayfabFacebookAuthFailed(PlayFabError error)
{
SetMessage("PlayFab Facebook Auth Failed: " + error.GenerateErrorReport(), true);
}
public void SetMessage(string message, bool error = false)
{
_message = message;
if (error)
Debug.LogError(_message);
else
Debug.Log(_message);
}
public void OnGUI()
{
var style = new GUIStyle { fontSize = 40, normal = new GUIStyleState { textColor = Color.white }, alignment = TextAnchor.MiddleCenter, wordWrap = true };
var area = new Rect(0,0,Screen.width,Screen.height);
GUI.Label(area, _message,style);
}
}
테스트
편집기에서 응용 프로그램 실행
- 재생 단추를 선택합니다. Facebook이 초기화되고 인증 호출이 이루어지면 게임 보기에 Facebook 인증 대화 상자가 나타납니다.
- 사용자 토큰을 입력합니다.
- 다음 그림과 같이 보내기 성공 단추를 선택합니다.
- 콘솔 출력을 확인합니다. 아래 그림과 같이 디버그 문이 렌더링되어야 합니다.
- 오류가 표시되지 않으면 인증이 성공했음을 의미합니다.
Android에서 응용 프로그램 실행
Android에서 응용 프로그램을 실행하기 전에 추가 구성 단계를 수행해야 합니다.
- 먼저 Android 플랫폼이 선택되어 있고 고유한 패키지 ID가 설정되어 있는지 확인해야 합니다(아래 예제 참조).
참고 항목
나만의 고유한패키지 ID를 만들어야 합니다.
팁
선택적 단계: Open SSL을 설치하고 PATH를 환경 변수에 추가합니다. 누락된 경우 Unity 빌드 중에 무해한 오류가 발생합니다. 이 오류는 빌드를 중지하거나 실행에 영향을 주지 않습니다.
다음으로, Facebook 응용 프로그램 콘솔에서:
- 기본 설정으로 이동합니다.
- 아래 제공된 예제에 표시된 대로 + 플랫폼 추가를 선택합니다.
- 그런 다음 사용 가능한 플랫폼 목록에서 Android를 선택합니다.
플랫폼별 설정이 있는 패널이 표시됩니다.
- 패키지 ID를 입력합니다.
- 저장을 선택합니다(저장 버튼은 페이지의 오른쪽 하단에 숨겨져 있습니다).
Android 장치에서 정상적으로 응용 프로그램을 빌드하고 실행합니다.
- 응용 프로그램이 Facebook 로그인 페이지로 시작됩니다.
- 로그인하면 화면에서 변경되는 메시지를 볼 수 있습니다.
- 마지막으로 PlayFab에 성공적으로 인증되었다는 메시지가 표시됩니다. 아래에 제공된 예제는 전체 과정을 보여줍니다.
iOS에서 응용 프로그램 실행
iOS에서 응용 프로그램을 실행하기 전에 추가 구성 단계를 수행해야 합니다.
- 먼저 iOS 플랫폼을 선택했는지 확인합니다.
- 그런 다음, 아래 제공된 예제에 표시된 대로 고유한 번들 ID를 설정합니다.
- 나만의 고유한패키지 ID를 만들어야 합니다.
다음으로, Facebook 응용 프로그램 콘솔에서
- 기본 설정으로 이동합니다.
- 아래 제공된 예제에 표시된 대로 + 플랫폼 추가를 선택합니다.
- 사용 가능한 플랫폼 목록에서 iOS를 선택합니다.
플랫폼별 설정이 있는 패널이 표시됩니다.
- 패키지 ID를 입력합니다.
- 저장 버튼을 선택합니다(저장 버튼은 페이지의 오른쪽 하단에 숨겨져 있습니다).
- 다음으로, 평소 대로 응용 프로그램을 빌드합니다.
- 이 작업이 완료되면 XCode를 사용하여 프로젝트를 엽니다.
- 프로젝트를 선택하여 프로젝트 설정을 엽니다.
- 번들 ID가 고유한 패키지 ID와 일치하는지 확인합니다.
- 올바른 장치를 선택했는지 확인해야 합니다.
- 올바른 ID 팀을 선택합니다.
마지막으로 응용 프로그램을 정상적으로 실행합니다.
- 시작되면 응용 프로그램에서 웹 브라우저를 사용하여 Facebook에 로그인할 수 있습니다.
- 완료되면 PlayFab 인증이 호출되고 메시지에 결과가 표시됩니다.
PlayFab 게임 관리자를 통한 확인
게임 관리자에서 PlayFab 타이틀을 엽니다.
- 대시보드로 이동합니다.
- PlayStream 디버거 패널을 참조하여 최신 이벤트를 확인합니다. 다음 예제에 표시된 대로 Facebook 인증 이벤트가 표시됩니다.
이 시점에서 PlayFab에 대한 Facebook 인증이 성공적으로 통합됩니다.