Facebook Android SDK FAQ 및 문제 해결

FAQ

Android 11에서는 프로젝트의 AndroidMainfest.xmlqueries 블록을 추가하면 문제를 해결할 수 있습니다.

<manifest package="com.example.app">
    <queries>
        <provider android:authorities="com.facebook.katana.provider.PlatformProvider" />
    </queries>
    ...
</manifest>

Facebook 앱 ID 하나를 여러 Android 앱에서 사용할 수 있습니다. 같은 앱 ID를 사용하여 다른 앱에서도 로그인, 공유 등의 작업을 할 수 있습니다.

알림 및 다른 방법을 통한 앱 열기 및 딥 링크에서는 단일 패키지 이름/클래스 이름 조합만 지원합니다.

여러 앱에서 딥 링크 지원을 원하는 경우 앱 링크를 참조하세요.

자체 strings.xml 파일에 원하는 언어로 번역을 제공하여 Android용 Facebook SDK의 문자열을 대체할 수 있습니다.

facebook/res/values/ 디렉터리의 strings.xml 파일에 SDK에서 사용하는 모든 문자열이 포함됩니다. 문자열 리소스의 이름은 명확해야 합니다.

자세한 내용은 Android 개발자 가이드: 리소스 현지화(영문)를 참조하세요.

SDK 다운로드에서 이전 SDK 버전을 다운로드할 수 있습니다.

네이티브 공유 대화 상자가 있는 Android용 Facebook SDK의 모든 릴리스에는 Facebook 앱용 APK도 포함되어 있습니다.

SDK 릴리스 3.14.1까지는 SDK 다운로드에 APK가 포함되어 있었지만, 그 이후로는 개별적으로 다운로드해야 합니다. APK는 다운로드 페이지에서 이용할 수 있습니다.

Android 에뮬레이터나 기기에서 Facebook APK를 설치하고 앱에서 네이티브 공유 대화 상자를 테스트하기만 하면 됩니다.

일반적으로 Android 라이브러리에서는 BuildConfig.DEBUG를 사용하여 앱이 디버그 모드에 있는지 판별할 수 있습니다. 그러나 Gradle의 버그로 인해 Android 라이브러리는 항상 DEBUG를 false로 설정하여 빌드합니다. 이에 대한 해결책으로 FacebookSdk.setIsDebugEnabled(boolean) 메서드를 사용하여 앱에서 디버그 모드를 직접 설정할 수 있습니다. 그러면 SDK에서 디버그 로깅이 가능합니다.

여러 다른 범주의 메시지를 로깅할 수 있도록 FacebookSdk.addLoggingBehavior(LogginBehavior)로 로깅 동작을 설정할 수도 있습니다. Android SDK 참조의 LoggingBehavior를 참조하세요.

공유 대화 상자는 사용자 액션 시 onSuccessonCancel로 콜백합니다.

  • 사용자가 정상적으로 공유하는 경우에는 onSuccess로 콜백합니다. 또한 사용자가 앱에 publish_actions 권한을 제공하는 경우 Sharer.Result 클래스에 postId 도 포함됩니다. 사용자가 Facebook 로그인을 사용하여 로그인하지 않은 경우 취소를 클릭하면 이 메서드도 호출됩니다.
  • 공유 대화 상자의 X 버튼을 클릭하거나, Facebook 로그인을 사용하여 로그인한 다음 취소를 클릭한 경우 onCancel로 콜백합니다.

문제 해결

게시 권한을 요청하면 다음과 같은 오류가 발생할 수 있습니다.

  • "세션: 대기 중인 요청이 있는 세션에 대한 새 권한을 요청했습니다." 또는
  • "요청이 대기 중인 동안 승인하려고 했습니다."

이 오류 메시지는 이전 요청이 완료되기 전에 앱에서 새 권한 요청을 시도 중임을 나타냅니다. 모든 권한 요청은 비동기식으로 처리되며 이전 요청이 완료되어야 새 권한을 요청할 수 있습니다.

SDK에서 제공하는 샘플 앱(예: Scrumptious 또는 Hello Facebook)에서 여러 단계를 통해 새 권한을 요청하는 방법을 확인하세요.

로그에 오류가 없으면 요청이 실행된 적이 없기 때문일 가능성이 큽니다. GraphRequest를 실행하려면 executeAsync 메서드를 호출하세요.

로그인하거나 네이티브 공유 대화 상자를 사용하려면 앱에 서명하는 데 사용하는 키에 대한 정보를 Facebook에 알려야 합니다.

즉, 앱에 서명하는 데 사용하는 키의 SHA-1 해시인 키 해시를 알려야 합니다. 일반적으로 개발과 디버그에 하나, 릴리스에 하나 등 두 개 이상의 서로 다른 키가 사용됩니다. 앱의 설정 페이지에서 두 값이 모두 추가되었는지 확인하세요.

자세한 내용은 Android SDK 시작하기의 개발 키 해시 만들기를 참조하세요.

가장 일반적인 이유는 AndroidManifest.xmlContentProvider를 설정하지 않았기 때문입니다. 앱 ID를 사용하여 AndroidManifest.xml 파일에 추가하세요. Android에서 공유 - 전제 조건을 참조하세요.