Android용 Facebook SDK 시작하기

이 문서에서는 Android용 Facebook SDK를 사용하여 Facebook과 Android 앱의 통합을 시작하는 방법을 설명합니다. Android용 Facebook SDK의 현재 버전은 12.0.0이고 Android API 15가 필요합니다. 버전과 기능에 대한 자세한 내용은 Android용 Facebook SDK를 참조하세요.

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

Android용 Facebook SDK를 사용하도록 앱을 설정하는 방법은 다음과 같습니다.

  • 빠른 시작을 사용합니다.
  • Android용 Facebook SDK로 프로젝트를 설정합니다.

빠른 시작

Facebook 앱 ID를 가져오려면 앱 설정을 구성하고 Android용 Facebook SDK를 가져와 아래의 버튼을 클릭한 후 지침을 따릅니다.

Android용 빠른 시작

시작하기 전에

다음과 같은 항목이 필요합니다.

광고 ID 권한에 대한 이해

13.0.0 버전부터 Android용 Facebook SDK를 사용하여 만든 각 앱은 광고 ID 권한을 앱에 자동으로 추가합니다. 자세한 내용은 광고 ID - Play Console 고객센터를 참조하세요.

앱에 광고 ID 권한을 포함하는 것을 옵트아웃하려는 경우도 있을 수 있습니다. 예를 들어 앱의 고객이 자녀와 가족일 경우 광고 ID 권한은 관련이 없을 수 있습니다. 앱에서 광고 ID 권한을 제외하려면 이 문서의 후반에 나오는 지침을 따르세요.

Android Studio 설정

프로젝트 만들기

Android Studio 프로젝트에서 Facebook SDK를 사용하려면 SDK를 빌드 종속성으로 추가하고 SDK를 가져옵니다.

  1. Android Studio | 새 프로젝트 | 최소 SDK로 이동합니다.

  2. API 15: Android 4.0.3(IceCreamSandwich) 이상을 선택하고 새 프로젝트를 만듭니다.

  3. Gradle Scripts | build.gradle (Project: <your_project>) 파일을 열고 다음을 추가합니다.

    mavenCentral()
    
  4. build.gradle (Project: <your_project>) 파일을 저장하고 닫습니다.

  5. Gradle Scripts | build.gradle (Module: app) 파일을 열고 다음을 dependencies 섹션에 추가합니다.

    implementation 'com.facebook.android:facebook-android-sdk:latest.release'
    

  6. build.gradle (Module: app) 파일을 저장하고 닫습니다.

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

매니페스트 업데이트

앱 ID클라이언트 토큰을 프로젝트의 문자열 파일에 추가하고 매니페스트 파일을 업데이트합니다. 다음 작업을 수행합니다.

  1. /app/res/values/strings.xml 파일을 앱 프로젝트에서 엽니다.

  2. facebook_app_idfacebook_client_token 이름을 포함하여 string 요소를 추가하고 값을 앱 ID클라이언트 토큰으로 설정합니다. 예를 들어 앱 ID가 1234이고 클라이언트 토큰이 56789일 경우 코드는 다음과 같습니다.

    <string name="facebook_app_id">1234</string><string name="facebook_client_token">56789</string>
  3. /app/manifests/AndroidManifest.xml 파일을 앱 프로젝트에서 엽니다.

  4. meta-data 요소를 앱 ID와 클라이언트 토큰의 application 요소에 추가합니다.

    <application android:label="&#064;string/app_name" ...>
        ...
        <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/><meta-data android:name="com.facebook.sdk.ClientToken" android:value="@string/facebook_client_token"/>
        ...
    </application>
  5. uses-permission 요소를 application 요소 뒤의 매니페스트에 추가합니다.

    <uses-permission android:name="android.permission.INTERNET"/>
  6. (선택 사항) 광고 ID 권한을 옵트아웃하려면 uses-permission 요소를 application 요소 뒤의 매니페스트에 추가합니다.

    <uses-permission android:name="com.google.android.gms.permission.AD_ID" tools:node="remove"/>
  7. 프로젝트를 빌드합니다.

공유 활성화

앱에서 링크, 이미지 또는 동영상을 공유하는 경우 매니페스트에서 FacebookContentProvider 권한을 선언합니다. 다음 작업을 수행합니다.

  1. /app/manifests/AndroidManifest.xml 파일을 앱 프로젝트에서 엽니다.

  2. provider 요소를 매니페스트에 추가하여 FacebookContentProvider 권한을 선언합니다. authorities 값의 끝에 앱 ID를 추가합니다. 예를 들어 앱 ID가 1234일 경우 다음과 같이 선언합니다.

    <provider android:authorities="com.facebook.app.FacebookContentProvider1234"
        android:name="com.facebook.FacebookContentProvider"
        android:exported="true" />
    
  3. 프로젝트를 빌드합니다.

샘플 앱 실행

다음 샘플은 Android용 Facebook SDK에 제공됩니다.

  • HelloFacebookSample — 프로필 액세스, 상태 업데이트, 사진 업로드를 보여줍니다.

Facebook SDK를 Android Studio 프로젝트에 가져와서 샘플로 실험할 수 있습니다. 이 샘플에는 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에서는 다음이 필요합니다.

Java SDK 폴더의 명령 프롬프트에서 다음 명령을 실행합니다. 28자로 구성된 문자열이 생성됩니다.

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

Facebook 개발자 사이트로 이동합니다. Facebook에 로그인하고 오른쪽 상단의 드롭다운 메뉴를 사용하여 개발자 설정으로 이동합니다.

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

여러 컴퓨터를 사용하여 개발하는 경우 여러 개의 키 해시를 추가할 수 있습니다.

이제 모든 샘플(Facebook 로그인을 사용하는 샘플 포함)을 컴파일하고 실행할 수 있습니다.

개발 키 해시 만들기

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

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

OS X 또는 Windows에서 키 해시를 생성하거나 Settings.getApplicationSignature(Context)에서 반환된 값을 사용하여 키 해시를 가져올 수 있습니다. 관련 지침은 샘플 앱 실행을 참조하세요.

릴리스 키 해시 만들기

앱과 Facebook 간의 정보 교환을 인증하려면 릴리스 키 해시를 생성하고 Facebook 앱 ID 내의 Android 설정에 추가해야 합니다. 이렇게 하지 않으면 앱을 스토어에 릴리스했을 때 Facebook 통합이 적절하게 작동하지 않을 수 있습니다.

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

앱을 공개할 때 앱은 일반적으로 개발 환경과 다른 서명으로 서명됩니다. 그러므로 릴리스 키 해시를 만들고 이를 Facebook 앱 ID의 Android 설정에 추가하는 것이 좋습니다.

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

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

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

Windows에서는 다음이 필요합니다.

Java SDK 폴더의 명령 프롬프트에서 다음 명령을 실행합니다.

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

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

이 명령에서 28자로 구성된 문자열이 생성됩니다. 이 릴리스 키 해시를 Facebook 앱 ID의 Android 설정에 복사하여 붙여넣습니다.

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

Android용 Facebook SDK를 Maven과 함께 사용

최신 버전의 Android용 Facebook 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
  • 네이티브가 아닌 로그인 대화 상자는 '..앱이 facebook 로그인에 대해 잘못 구성되었습니다...' 오류 메시지와 함께 표시됩니다.

올바른 키 해시를 사용하고 있는지 확인할 수 있습니다. 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=

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