Android SDK 시작하기

Android용 Facebook SDK는 Facebook과 Android 앱을 통합하는 가장 쉬운 방법입니다. SDK를 통해 다음 기능을 구현할 수 있습니다.

Facebook SDK를 사용하도록 앱을 설정하는 데는 두 가지 방법이 있습니다.

  • 빠른 시작 사용.
  • Facebook SDK로 프로젝트 설정.

빠른 시작

Facebook 앱 ID를 가져오려면 앱의 설정을 구성하고 Facebook SDK를 가져온 후 아래의 버튼을 클릭하고 온라인 지침을 따르세요.

Android용 빠른 시작

 

관련 가이드:

Android Studio 설정

프로젝트에 Facebook SDK를 사용하려면 SDK를 빌드 종속성으로 추가한 다음 가져오세요.

1. Android Studio | New Project(새 프로젝트) | Minimum SDK(최소 SDK)로 이동합니다.

2. API 15: Android 4.0.3 및 이후 버전을 선택하고 새 프로젝트를 만듭니다.

3. 새 프로젝트를 만든 후 your_app | build.gradle을 엽니다.

4. 다음을 build.gradle (Project) 파일의 buildscript { repositories {}} 섹션에 추가합니다.

mavenCentral() 

5. 다음을 build.gradle (module: app) 파일의 dependencies {} 섹션에 추가하여 Facebook SDK의 최신 버전을 컴파일합니다.

이 파일은 삭제되어야 합니다. 자세한 내용은 Arsenio Locsin에게 문의하세요.

Facebook SDK를 사용할 때 자동 이벤트 로깅을 비활성화하지 않으면 앱의 이벤트가 Facebook 분석을 위해 자동으로 로깅되고 수집됩니다. 수집되는 정보 및 자동 이벤트 로깅을 비활성화하는 방법에 대한 자세한 내용은 자동 앱 이벤트 로깅을 참조하세요.

6. 프로젝트를 빌드합니다. 이제 앱에 com.facebook.FacebookSdk를 가져올 수 있습니다.

Facebook 앱 ID 추가

다음과 같이 Facebook 앱 ID를 프로젝트 문자열 파일에 추가하고 Android 매니페스트를 업데이트합니다.

1. strings.xml 파일을 엽니다. 경로 예시: /app/src/main/res/values/strings.xml.

2. 이름이 facebook_app_id인 새 문자열과 값을 Facebook 앱 ID로 추가합니다.

3. AndroidManifest.xml를 엽니다.

4. 매니페스트에 uses-permission 요소를 추가합니다.

<uses-permission android:name="android.permission.INTERNET"/>

5. meta-data 요소를 application 요소에 추가합니다.

<application android:label="@string/app_name" ...>
    ...
    <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>
    ...
</application>

이미지 또는 동영상 전송

Android용 Facebook 앱을 통해 링크, 이미지 또는 동영상을 공유하는 경우 매니페스트에 FacebookContentProvider도 선언해야 합니다.

authorities 값의 끝에 앱 ID를 추가합니다. 예를 들어, Facebook 앱 ID가 1234이면 선언은 다음과 같아야 합니다.

<provider android:authorities="com.facebook.app.FacebookContentProvider1234"
          android:name="com.facebook.FacebookContentProvider"
          android:exported="true" />

SDK와 ProGuard 함께 사용

Facebook Android SDK에 ProGuard를 사용하는 경우 추가 단계를 수행할 필요가 없습니다. Proguard에 대한 안내는 Android 개발자 사이트, Shrink Your Code and Resources(영문)를 참조하세요.

샘플 앱 실행

SDK에는 다음 샘플이 포함되어 있습니다.

  • HelloFacebookSample - 프로필 액세스, 상태 업데이트 및 사진 업로드를 표시합니다.
  • RPSSample - 네이티브 공유 대화 상자, 오픈 그래프 게시, 선택 도구, 초대 및 딥 링크를 사용합니다.
  • Scrumptious - 로그인, 요청, 선택 도구, 사진 업로드 및 오픈 그래프 게시 기능이 있습니다.

Android Studio 프로젝트에 SDK를 가져와 샘플을 사용할 수 있습니다.

샘플은 maven central 또는 jcenter를 통한 중앙 저장소 종속성이 아니라 프로젝트 종속성을 가집니다. 따라서 SDK의 로컬 사본을 업데이트하면 샘플에 변경 내용이 반영됩니다.

샘플 앱을 신속하게 실행하기 위해 개발 환경에 대한 키 해시를 생성할 수 있습니다. 샘플 앱의 Facebook 개발자 프로필에 이러한 키 해시를 추가하세요. 키 해시를 생성하기 위한 Keytool은 개발 환경 설정의 일부로 설치한 Java SE Development Kit(JDK)와 함께 포함되어 있습니다. OpenSSL은 OpenSSL에서 다운로드할 수 있습니다.

OS X에서 다음을 실행하세요.

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

Windows에서 다음을 실행하세요.

keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl
base64

그러면 28자의 문자열이 생성됩니다.

Facebook 개발자 사이트로 이동합니다. Facebook에 로그인한 다음, 맨 위 오른쪽에 있는 드롭다운 메뉴를 통해 개발자 설정으로 이동합니다.

개발자 설정의 메뉴에서 샘플 앱을 선택하고 프로필에 키 해시를 추가한 다음 저장합니다.

여러 시스템에서 개발하는 경우 키 해시를 여러 개 추가할 수 있습니다.

이제 Facebook 로그인을 사용하는 샘플을 비롯한 모든 샘플을 컴파일하여 실행할 수 있습니다.

개발 키 해시 만들기

Facebook에서는 키 해시를 사용하여 개발자의 앱과 Facebook 앱 간의 상호 작용을 인증합니다. Facebook 로그인을 사용하는 앱을 실행하는 경우 Android 개발 키 해시를 Facebook 개발자 프로필에 추가해야 합니다.

출시하는 앱 버전에 대해서도 릴리스 키 해시를 생성 및 설정해야 합니다.

OS X 또는 Windows에서 키 해시를 생성하거나 Settings.getApplicationSignature(Context)에서 반환한 값을 사용하여 키 해시를 얻을 수 있습니다. 지침을 보려면 샘플 앱 실행을 참조하세요.


다음 단계

Android용 Facebook SDK를 설치하고 Facebook 앱 ID를 구성하고 나면 다음을 볼 수 있습니다.


릴리스 키 해시 설정

앱과 Facebook 사이의 정보 교환을 인증하려면 릴리스 키 해시를 생성하고 Facebook 앱 ID의 Android 설정에 이 해시를 추가해야 합니다. 이 해시가 없으면 스토어에 앱을 출시할 때 Facebook 통합이 제대로 작동하지 않을 수 있습니다.

이전 단계에서 개발 환경에 맞는 키 해시를 사용하여 Facebook 개발자 설정을 업데이트했어야 합니다.

앱을 게시할 때는 일반적으로 다른 서명을 사용하여 개발 환경에 서명합니다. 따라서 릴리스 키 해시를 만든 다음 이 해시를 Facebook 앱 ID에 대한 Android 설정에 추가하기를 원할 수 있습니다.

릴리스 키의 해시를 생성하려면 Mac 또는 Windows에서 다음 명령을 실행하여 릴리스 키 별칭과 키 저장소의 경로를 대체합니다. OS X에서 다음을 실행하세요.

keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64

Windows에서는 다음을 사용하세요.

keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64

릴리스 키를 처음 만들 때 설정한 비밀번호를 사용해야 합니다.

이 명령을 실행하면 28자의 문자열이 생성되어야 합니다. 이 릴리스 키 해시를 Facebook 앱 ID의 Android 설정에 복사하여 붙여넣습니다.

Facebook 앱 ID의 Android 설정에 Android 패키지의 올바른 패키지 이름과 기본 액티비티 클래스가 포함되어 있는지도 확인해야 합니다.


Facebook SDK와 Maven 함께 사용

사용 가능한 최신 버전의 Android SDK를 사용하여 Maven 종속성을 선언할 수 있습니다.

<dependency>
  <groupId>com.facebook.android</groupId>
  <artifactId>facebook-android-sdk</artifactId>
  <version>PUT_LATEST_VERSION_HERE</version>
</dependency> 

샘플 앱 문제 해결

샘플 앱을 실행하는 데 문제가 있는 경우 키 해시와 관련된 문제일 수 있습니다. 다음 시나리오 중 하나를 경험할 수 있습니다.

  • 네이티브 로그인 대화 상자가 표시되지만, 권한을 승인한 후에도 여전히 로그아웃 상태에 있습니다. logcat에 다음 예외도 있습니다.
12-20 10:23:24.507: W/fb4a:fb:OrcaServiceQueue(504):
com.facebook.orca.protocol.base.ApiException: remote_app_id does not match stored id
  • 네이티브가 아닌 로그인 대화 상자에 "App is Misconfigured for facebook login..." 오류 메시지가 표시됩니다.

키 해시를 확인하여 올바른 키 해시를 사용하는지 점검할 수 있습니다. I

올바른 키 해시를 사용하도록 샘플 코드를 직접 수정할 수도 있습니다. 예를 들어, HelloFacebookSampleActivity 클래스에서 onCreate()를 임시로 변경합니다.

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    
    // Add code to print out the key hash
    try {
        PackageInfo info = getPackageManager().getPackageInfo(
                "com.facebook.samples.hellofacebook", 
                PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures) {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
            }
    } catch (NameNotFoundException e) {
        
    } catch (NoSuchAlgorithmException e) {
        
    }
    
    ...

변경 내용을 저장하고 샘플을 다시 실행합니다. logcat 출력에 다음과 비슷한 메시지가 표시되는지 확인합니다.

12-20 10:47:37.747: D/KeyHash:(936): 478uEnKQV+fMQT8Dy4AKvHkYibo=

개발자 프로필에 키 해시를 저장합니다. 샘플을 다시 실행하여 정상적으로 로그인할 수 있는지 확인합니다.