본문 바로가기

도구의발견

Unity3D + Facebook 연동 개발 가이드(안드로이드 버젼)

이번 포스팅은 Facebook Unity SDK(https://developers.facebook.com/)를 이용하여 Unity와 facebook을 연동하는 방법에 대해서 다룹니다. 예제 코드는 facebook sdk 패키지를 import하면 만들어지는 Examples/InteractiveConsole이 깔끔하고 쉽게 나와있으므로 그것을 보시는 것이 좋습니다.

본 포스팅에서는 InteractiveConsole 예제를 실행하면서 겪었던 환경 셋팅 문제를 주로 다룹니다. 현재 안드로이드 버젼만 다루고 있으며 ios의 경우에는 해당 작업을 하게 되면 추가하도록 하겠습니다.

준비 작업

  • Java SDK(ver 1.7) : facebook 앱 인증에 필요한 key hash를 생성하는데 사용됩니다.
  • OpenSSL(dowload) : facebook key hash를 생성과 안드로이드 빌드 위해 필요 합니다.
    • Java SDK와 OpenSSL의 경우에는 설치를 하고 환경 변수 PATH에 bin 디렉토리의 경로를 등록합니다.
  • Unity 3D(ver. 4.3.4f) : https://unity3d.com/kr/get-unity/download에서 다운 받으시면 됩니다. 자세한 설명은 생략합니다.
  • Facebook Unity SDK(ver 4.3.6) : https://developers.facebook.com/docs/unity/downloads/에서 다운 받으시면 됩니라. 링크가 변경 되었더라도 충분히 검색을 통해 찾으실수 있으리라 믿습니다.

※ 혹시 몰라 버젼을 기록해 두었습니다. 뭔가 이상하게 돌아간다면 버젼을 확인해보시고 버젼이 상이하고 이 문서가 더 이상 도움이 되지 않는다고 생각 되시면 kukuta@gmail.com으로 메일 주십시오.

Overview

우리가 하게 될 작업에 대해 간단하게 알아 보겠습니다.

  1. 일단 Unity가 설치되어 있어야 합니다.
  2. Facebook Unity SDK를 Unity 프로젝트에 import 합니다. 
  3. Facebook app을 만듭니다.
  4. Unity에서 Build Setting과 Facebook 연동.
  5. 빌드해서 스마트 폰에 올려 봅니다.
  6. 테스트 합니다.
  7. 문제를 발견 합니다..고칩니다..빌드해서 스마트 폰에 올려 봅니다..테스트 합니다..문제르..쿨럭..

Step 1. Unity 설치

  • 알아서들 설치 합니다. 이 포스트를 볼 정도면 Unity 설치가 문제가 아니라고 생각 됩니다.

Step 2. Facebook Unity SDK Download & Import

Step 3. Facebook 앱 만들기

  • Facebook 앱 생성에 대한 설명 역시 생략합니다.
  • 설정에 필요한 Package Name, Class Name, Key Hashes 항목은 Unity 셋팅을 통해 생성됩니다.
  • 본 포스팅 마지막 과정에서 위 세개 값을 Unity로 부터 생성하여 복사해서 넣도록 하겠습니다.
반응형

Step 4. Unity와 Facebook 연동

1) App Name, App Id - "Invalid App Id"

  • Unity 프로젝트 생성, Scene 생성 등에 대한 설명은 생략합니다.
  • 'Facebook > Edit Settings' 메뉴를 클릭하면 Facebook Settings Inspector가 뜹니다.
  • 'Facebook 앱'에서 App Name과 App Id 복사해 붙여 넣습니다.

2) 플랫폼 안드로이드로 변경

  • 'File > Build Settings' 메뉴를 클릭, Platform=Android 변경, Switch Platform을 클릭하여 플랫폼을 변경합니다.

3) Package Name 지정

  • 'Facebook > Edit Settings'에 보면 기본 Package Name이 (com.Company.ProductName) 셋팅 되어 있습니다.
  • 'File > Build Settings > Player Settings 클릭 > Inspector 창 > Other Settings 메뉴 > Bundle Identifier'를 수정

4) Class Name

  • 'com.facebook.unity.FBUnityDeepLinkingActivity'
  • 지정되어 있는대로 내비둡니다. 나중에 이걸 복사해서 facebook 엡에 붙여 넣을 겁니다.

5) Key Hash 생성

NOTE - 조심하십시오. 가장 많은 삽질이 여기서 일어 납니다.

  • "your android debug keystorefile is missing! you can create new one by creating and build empty android project in eclipse" 가 디스플레이 되고 있다면 아직은 정상입니다.
  • key hash를 먼저 생성해 주어야 합니다. 그러기 위해서는 Java SDK 에 들어 있는 keytool과 OpenSSL이 필요 합니다. (혹시 아직 설치하지 않았다면 Java SDK와 OpenSSL을 설치하시고 환경 변수(PATH)에 bin 디렉토리를 등록하신 다음 여기로 돌아 오시기 바랍니다)
  • 커맨드 창을 열어 다음과 같이 입력 합니다 :
    keytool -genkey -alias androiddebugkey -keystore D:\Project\FacebookLogin\Facebook\debug.keystore | "openssl.exe" sha1 -binary | "openssl.exe" base64
    • '-genkey' : 키를 생성하라는 옵션입니다.
      Facebook 가이드 문서를 보면 -exportcert 옵션을 사용하는데, 이 옵션의 경우 파일이 없는 경우 새로 생성 해내지 않습니다. 하지만 우리는 대부분 처음 작업하는 사람인지라 기존 파일이 없겠지요.
    • '-alias' : 뭔지 잘 모르겠습니다. 그냥 androiddebugkey라고 적어 줍니다.
    • '-keystore' : key가 저장될 위치와 이름을 지정합니다.
      상대 경로도 가능한지 모르겠습니다. 지정된 디렉토리가 없는 경우 새로 생성하지 않고 실패 합니다. 디렉토리는 미리 생성 되어 있어야 합니다.
    • 나머지는 그냥 그대로 따라 쓰면 됩니다.
  • 정상적인 상황이라면 패스워드를 물어 옵니다. "android" 를 입력 합니다. 그 외에 질문하는 것들은 모두 엔터로 넘겨 버리고 맨 마지막 질문에 "yes(한글 버젼이면 예)"를 타이핑합니다. 이렇게 되면 key hash 생성에 성공 입니다.(따옴표는 입력하지 않습니다. 만일 패스워드를 묻지 않는다면 뭔가 잘못 된 것입니다.)

6) 'File > Build Settings > Player Settings 클릭 > Inspector 창 > Publishing Settings

  • Use Existing Keystore 체크
  • Browse Keystore클릭 하고 이전에 생성해놓은 debug.keystore 위치를 찾아 선택
  • Keystore password에 "android" 입력
  • Alias 에서 androiddebukey 선택
  • Password "android" 

  • 위와 같이 셋팅하고 다시 'Facebook > Edit Settings' 메뉴로 돌아가면 Package Name, Class Name, Debug Android Key Hash가 모두 반영 되어있습니다.
  • ..라고 하고 싶지만 여전히 "your android debug keystorefile is missing! you can create new one by creating and build empty android project in eclipse" 메시지가 나오고 있을 겁니다.
  • Facebook SDK의 윈도우쪽 버그로써 아래 Trouble Shooting에서 다루겠습니다.

7) Unity로 부터 Package Name, Class Name, Key Hash를 복사 & 붙여 넣기를 하고 저장

  • 'Facebook > Edit Settings'
  • Package Name, Class Name, Key Hash를 페이스 북에 복사 & 붙여 넣기
  • 로그인 테스트를 하는데 개발자만 로그인이 되고 다른 사람들이 로그인 되지 않는 경우는 아래 Trouble Shooting 항목을 참고 하세요.

Step 5. Build & Run on Device

  • Facebook SDK 4.3버젼에서는 PC에서 로그인 테스트를 하는 경우 무조건 성공을 떨어뜨리는 버그가 있다. 제대로된 테스트를 위해서는 꼭 장치에 올려서 테스트 해보도록 한다.

Step 6. Trouble Shooting :

  • "your android debug keystorefile is missing! you can create new one by creating and build empty android project in eclipse"
    • key hash 파일이 생성되지 않았거나, 지정된 위치에 없으면 발생하는 에러 메시지 입니다.
    • key hash 파일을 생성했고, 해당 파일이 지정된 디렉토리에 있는데도 불구하고 위 메시지가 발생 되는 경우 원인은 Facebook Unity SDK 의 버그로써 SDK에서는 key hash 파일을 특정 위치에만 놓고 사용하도록 코드가 만들어져 있습니다(윈도우의 경우에는 "C:/Users/<계정>/.android/debug.keystore", 리눅스 or 맥의 경우에는 ~/.android/debug.keystore). 그런데 윈도우의 경우에는 앞에 "C:/" 부분이 빠져 있기 때문에 SDK 코드를 직접 수정해야만 합니다(http://answers.unity3d.com/questions/596752/android-debug-keystore-file-is-missing.html) :
      // File : Facebook/Editor/android/FacebookAndroidUtil.cs
      private static string DebugKeyStorePath
      {
          get
          {
              return Application.dataPath + @"/../Facebook/debug.keystore";
              /*
              return (Application.platform == RuntimePlatform.WindowsEditor) ? 
                  System.Environment.GetEnvironmentVariable("HOMEPATH") + @"\.android\debug.keystore" : 
                  System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal) + @"/.android/debug.keystore";
              */
          }
      }
    • 저 같은 경우 Unity 프로젝트 내에 Facebook이라는 디렉토리를 만들고 그 안에 debug.keystore 파일을 저장했습니다만..각자 편한대로 수정해서 사용하시면 될듯 합니다.
  • "openssl not found. make sure that openssl is installed and that it is in your path"
    • open ssl이 PATH 환경 변수에 제대로 등록 되지 않은 것입니다. 등록하시고 unity를 재시작 합니다.
  • 개발자만 로그인이 되고 다른 사람 계정은 로그인이 되지 않아요!
    • Facebook 앱을 공개로 변경하지 않으면 앱 개발자만 로그인 할수 있습니다. Status & Review 설정에서 앱을 공개로 변경하거나 테스트 사용자를 등록하여 로그인하셔야 합니다.

이상 Unity와 Facebook의 연동 가이드를 마칩니다. 문의는 아래 댓글을 이용 부탁 드립니다.

유익한 글이었다면 공감(❤) 버튼 꾹!! 추가 문의 사항은 댓글로!!