Android 11에서는 프로젝트의 AndroidMainfest.xml
에 queries
블록을 추가하면 문제를 해결할 수 있습니다.
<manifest package="com.example.app"> <queries> <provider android:authorities="com.facebook.katana.provider.PlatformProvider" /> </queries> ... </manifest>
자체 strings.xml
파일에 원하는 언어로 번역을 제공하여 Android용 Facebook SDK의 문자열을 대체할 수 있습니다.
facebook/res/values/
디렉터리의 strings.xml
파일에 SDK에서 사용하는 모든 문자열이 포함됩니다. 문자열 리소스의 이름은 명확해야 합니다.
자세한 내용은 Android 개발자 가이드: 리소스 현지화(영문)를 참조하세요.
일반적으로 Android 라이브러리에서는 BuildConfig.DEBUG
를 사용하여 앱이 디버그 모드에 있는지 판별할 수 있습니다. 그러나 Gradle의 버그로 인해 Android 라이브러리는 항상 DEBUG
를 false로 설정하여 빌드합니다. 이에 대한 해결책으로 FacebookSdk.setIsDebugEnabled(boolean)
메서드를 사용하여 앱에서 디버그 모드를 직접 설정할 수 있습니다. 그러면 SDK에서 디버그 로깅이 가능합니다.
여러 다른 범주의 메시지를 로깅할 수 있도록 FacebookSdk.addLoggingBehavior(LogginBehavior)
로 로깅 동작을 설정할 수도 있습니다. Android SDK 참조의 LoggingBehavior를 참조하세요.
공유 대화 상자는 사용자 액션 시 onSuccess
및 onCancel
로 콜백합니다.
onSuccess
로 콜백합니다. 또한 사용자가 앱에 publish_actions
권한을 제공하는 경우 Sharer.Result
클래스에 postId
도 포함됩니다. 사용자가 Facebook 로그인을 사용하여 로그인하지 않은 경우 취소를 클릭하면 이 메서드도 호출됩니다. X
버튼을 클릭하거나, Facebook 로그인을 사용하여 로그인한 다음 취소를 클릭한 경우 onCancel
로 콜백합니다.게시 권한을 요청하면 다음과 같은 오류가 발생할 수 있습니다.
이 오류 메시지는 이전 요청이 완료되기 전에 앱에서 새 권한 요청을 시도 중임을 나타냅니다. 모든 권한 요청은 비동기식으로 처리되며 이전 요청이 완료되어야 새 권한을 요청할 수 있습니다.
SDK에서 제공하는 샘플 앱(예: Scrumptious 또는 Hello Facebook)에서 여러 단계를 통해 새 권한을 요청하는 방법을 확인하세요.
로그에 오류가 없으면 요청이 실행된 적이 없기 때문일 가능성이 큽니다. GraphRequest
를 실행하려면 executeAsync
메서드를 호출하세요.
로그인하거나 네이티브 공유 대화 상자를 사용하려면 앱에 서명하는 데 사용하는 키에 대한 정보를 Facebook에 알려야 합니다.
즉, 앱에 서명하는 데 사용하는 키의 SHA-1 해시인 키 해시를 알려야 합니다. 일반적으로 개발과 디버그에 하나, 릴리스에 하나 등 두 개 이상의 서로 다른 키가 사용됩니다. 앱의 설정 페이지에서 두 값이 모두 추가되었는지 확인하세요.
자세한 내용은 Android SDK 시작하기의 개발 키 해시 만들기를 참조하세요.
가장 일반적인 이유는 AndroidManifest.xml
에 ContentProvider
를 설정하지 않았기 때문입니다. 앱 ID를 사용하여 AndroidManifest.xml
파일에 추가하세요. Android에서 공유 - 전제 조건을 참조하세요.