Search
Duplicate

Unity에서 Facebook로그인 하는 방법

간단소개
소셜 로그인 3대장 Facebook 로그인을 구현해봅시다
팔만코딩경 컨트리뷰터
ContributorNotionAccount
주제 / 분류
Unity
Android
iOS
Scrap
태그
C#
앱개발
9 more properties
소셜 로그인 3대장 중 하나인 Facebook 로그인을 구현해봅시다!

Facebook Developer

로고 디자인

페이스북 로고는 Facebook Brand Resource Center에서 다운 받을 수 있다.

개발자 계정

Facebook fo Developers 사이트에서 개발자 계정을 생성하고, 앱 등록을 먼저 해야 한다.
앱 등록 후, 아래 목록들이 필요하다.
App ID
App Secret
Client Token
User Token

App ID & App Secret

해당 앱의 대쉬보드에서 설정>기본 설정으로 이동하면 확인할 수 있다.
App Secret은 우측에 보기버튼을 누르면 확인할 수 있다.

Client Token & User Token

AppToken: Access Token 도구에서 확인할 수 있다.
User Token
1.
권한을 부여해야합니다 를 선택
2.
상단의 도구>그래프 API 탐색기 메뉴를 선택
3.
앱을 선택
4.
Generate Access Token을 선택하면 생성

테스터 생성

위 홈페이지 내용대로
1.
대시 보드>역할>테스트 사용자 선택
2.
테스트 사용자 섹션으로 이동
3.
테스트 사용자 만들기 버튼 선택 계정 생성
4.
항목들을 모두 작성한 후, Create test users 버튼을 눌러 계정 생성

Unity

Facebook SDK for Unity

Facebook SDK는 공식 홈페이지 또는 Facebook Github에서 다운로드 할 수 있다.
공식 홈페이지에서 다운로드한 파일의 압축을 해제하면 Unity Package파일이 들어있다.
실행시키면 Facebook SDK를 유니티 프로젝트에 Import 할 수 있다.
Facebook SDK를 Import 했다면 상단 메뉴에 Facebook 메뉴가 생성된다.
Facebook>Edit Settings를 선택하면 우측 inspector창에 Facebook 설정 목록이 뜬다.
App Name에 앱 이름을 적어주고
Facebook App Id에 Facebook Developer에서 확인한 App ID를 적어준다.

Android build Setting

Facebook 설정 목록 중 Android Build Facebook Settings에서 확인할 목록
Package Name:Bundle Id와 같은지 확인한다.
Class Name: Developer 페이지에서 사용되기 때문에 따로 저장
Key Hash: Regenerate Android Manifest 버튼을 눌러서 생성
만약, 버튼을 눌러도 반응이 없다면 위에 오류 내용을 확인 필요

Android SDK

Android SDK를 설정하라는 오류
1.
Unity 상단 메뉴의 Edit>Preferences... 메뉴 선택
2.
External Tools메뉴에서 Android SDK Tool가 Unity 기본으로 설정되어있음을 확인
3.
Android SDK Tool의 체크박스를 해제
4.
Android Studio를 켜서 상단 메뉴 중 SDK Manager 메뉴를 선택
5.
Android SDK Location 칸에 적힌 경로를 확인
만약 설치된 SDK가 없다면 설치
6.
Unity External Tools에서 Android SDK Toold의 경로를 수정
7.
Facebook 설정 목록을 확인해서 오류가 사라졌는지 확인.

OpenSSL

OpenSSL을 찾을 수 없다는 오류.
1.
Google-Code-Archive에서 openssl-0.9.8k_X64.zip파일을 다운로드
2.
압축 파일을 푼 다음 OpenSSL의 bin파일 경로를 확인
3.
시스템 환경변수 편집>환경변수 선택
4.
시스템 변수의 Path 에 경로를 추가
5.
컴퓨터 재부팅
6.
Facebook 설정 목록을 확인해서 오류가 사라졌는지 확인.

JDK

JDK를 찾을 수 없다는 오류.
1.
ORACLE에서 JDK를 다운받기
2.
OpenSSL과 동일하게 다운받은 JDK의 bin파일 경로 확인
3.
시스템 환경변수 Path 에 추가
4.
컴퓨터를 재부팅

테스트

Facebook SDK에서는 빌드하지 않고 테스트 할 수 있는 환경을 제공
Facebook SDK 패키지에서 Examples폴더에 들어있는 파일들이 필요.
MainMenu.unity 신을 열어서 Play 버튼을 누르면 메뉴들이 나타남
1.
FB.Init 버튼 선택
2.
비활성화 되어있던 버튼들이 활성화 됨
3.
Classic login 버튼 선택
4.
Dialog 창의 User Access TokenAccess Token 도구에서 확인한 User Token 입력
5.
Send Success 버튼 선택
6.
상단 Status에서 결과 확인
7.
Log 버튼을 선택하면 자세한 내용을 볼 수 있다.

코드

함수에 대한 정보는 Facebook SDK for Unity Reference에서 확인할 수 있다.
예제 코드는 Facebook SDK for Unity - Examples에서 확인할 수 있다.

Initialized

using Facebook.Unity; private void Awake() { if (!FB.IsInitialized) { FB.Init(InitCallback, OnHideUnity); } else { FB.ActivateApp(); } } private void InitCallback() { if (FB.IsInitialized) { FB.ActivateApp(); } else { Debug.Log("Failed to Initialize the Facebook SDK"); } } private void OnHideUnity(bool isGameShown) { //facebook 로그인 과정에서 시간을 멈추는 역할 if (!isGameShown) { Time.timeScale = 0; } else { Time.timeScale = 1; } }
C#
복사

로그인

private void SignWithFacebook() { // 접근 권한을 얻을 항목들 var perms = new List<string>() { "public_profile", "email" }; FB.LogInWithReadPermissions(perms, AuthCallback); } private void AuthCallback(ILoginResult result) { if (FB.IsLoggedIn) { var token = Facebook.Unity.AccessToken.CurrentAccessToken; Debug.Log("UID: " + token.UserId); Debug.Log("Access Token: " + token.TokenString); foreach (string perm in token.Permissions) { // 접근 권한이 있는 항목들 Debug.Log("perm: " + perm); } } else { Debug.Log("User cancelled login"); } }
C#
복사

빠른 로그인

private void ReSignwithFacebook() { FB.Mobile.RefreshCurrentAccessToken(RefreshCallback); } private void RefreshCallback(IAccessTokenRefreshResult result) { if (FB.IsLoggedIn) { var token = result.AccessToken; Debug.Log("UID: " + token.UserId); Debug.Log("Access Token: " + token.TokenString); } else { Debug.Log("Error: " + result.Error); } }
C#
복사

Android Build

Grandle build failed

stderr[ FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':launcher:checkReleaseDuplicateClasses'. > 1 exception was raised by workers: java.lang.RuntimeException: Duplicate class android.support.v4.app.INotificationSideChannel found in modules classes.jar (androidx.core:core:1.0.0) and classes.jar (com.android.support:support-compat:27.0.2) Duplicate class android.support.v4.app.INotificationSideChannel$Stub found in modules classes.jar (androidx.core:core:1.0.0) and classes.jar (com.android.support:support-compat:27.0.2) Duplicate class android.support.v4.app.INotificationSideChannel$Stub$Proxy found in modules classes.jar (androidx.core:core:1.0.0) and classes.jar (com.android.support:support-compat:27.0.2) Duplicate class android.support.v4.os.IResultReceiver found in modules classes.jar (androidx.core:core:1.0.0) and classes.jar (com.android.support:support-compat:27.0.2) Duplicate class android.support.v4.os.IResultReceiver$Stub found in modules classes.jar (androidx.core:core:1.0.0) and classes.jar (com.android.support:support-compat:27.0.2) ...
Bash
복사
Android로 빌드 할 때, Console창에 위 내용이 찍히면서 실패하는 경우가 있다.
Facebook SDK 이슈로 등록되어있기도 한데 androidx와 충돌해서 생기는 문제

해결 방법

1.
Edit>Project Setting>Player>Publishing Setting>Build로 이동
2.
Custom Gradle Properties Template 체크
3.
아래 경로에 생성된 gradleTemplate.properties파일에서 제일 위에 다음 내용 추가
android.useAndroidX = true android.enableJetifier = true
Bash
복사
4.
빌드 다시 시도

Xcode

Pod

source 'https://github.com/CocoaPods/Specs.git' platform :ios, '12.0' target 'UnityFramework' do pod 'FBSDKCoreKit', '~> 11.0' pod 'FBSDKCoreKit_Basics', '~> 11.0' pod 'FBSDKGamingServicesKit', '~> 11.0' pod 'FBSDKLoginKit', '~> 11.0' pod 'FBSDKShareKit', '~> 11.0' pod 'Firebase/Analytics', '8.3.0' pod 'Firebase/Core', '8.3.0' pod 'Firebase/Crashlytics', '8.3.0' pod 'Google-Mobile-Ads-SDK' end target 'Unity-iPhone' do end use_frameworks!
Bash
복사
Podfile

Build Setting

pod update 했을 때, 위 사진처럼 경고 메세지가 뜨거나
Xcode에서 빌드를 눌렀을 때, 위 사진과 같은 오류가 발생한다면
1.
Xcode에서 Targets은 Unity-iPhone 선택
2.
BuildSetting메뉴 선택
3.
검색창에 LIBRARY_SEARCH_PATHS 검색
4.
작성되어있는 항목을 -버튼을 눌러 모두 삭제
5.
비어있는 상태인 LIBRARY_SEARCH_PATHS를 선택
6.
Backspace를 누르면 값이 자동으로 설정된다.
7.
OTHER_LDFLAGS도 동일하게 설정.
8.
다시 pod update
9.
초록색 글씨로 Pod installation complete! 문구가 나타난다면 설치 성공

Facebook Framework

General>Frameworks, Libraries, and Embedded Content
+버튼을 누르고 FBSDKCoreKit추가

실행

1.
Build후 게임 실행
2.
Facebook Login 버튼 선택
3.
아래 사진처럼 Facebook 로그인 창이 뜨고 아이디와 비밀번호를 입력해 로그인
해당 브라우저에서 이미 로그인 되어 있다면 이 과정은 생략됨.
4.
테스터에 등록되지 않은 계정이라면 위에 오류 메세지가 표시된다.
5.
테스트 계정으로 로그인 시, 정보 동의 페이지가 표시된다.
참고한 사이트