Facebook Android SDK 常见问题和疑难解答

常见问题

对于 Android 11,您可以向项目的 AndroidMainfest.xml 添加以下 queries 代码块来解决此问题:

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

您可以在多个 Android 应用中使用一个 Facebook 应用编号。在其他应用中使用相同的应用编号登录和分享等。

如果通过通知和其他方式深度链接和打开应用,我们只支持单个包名称/类名称组合。

如果需要深度链接支持多应用,请参阅应用链接

您可在 Android 版 Facebook SDK 内改写字符串,此操作可以通过在自己的“strings.xml”文件内提供翻译来实现,从而获得需要的语言环境。

“facebook/res/values/”目录中的“strings.xml”文件包括 SDK 使用的所有字符串。字符串资源的名称应简单明了。

详情请参阅 Android 开发者指南:资源本地化

如需下载较早版本的 SDK,可以前往 SDK 下载

有原生“分享”对话框的每版 Android 版 Facebook SDK 还包含适用于 Facebook 应用的 APK。

此 APK 位于 SDK 3.14.1 以下版本的下载包内。从 SDK 3.14.1 开始,APK 都是独立的下载包。前往我们的下载页面,即可找到相关的 APK。

只需在 Android 模拟器或 Android 设备上安装 Facebook APK,即可在应用中测试原生“分享”对话框。

正常情况下,Android 库可使用“BuildConfig.DEBUG”确定应用是否处于调试模式。但由于 Gradle 中的缺陷,必须始终在“DEBUG”设置为 false 的情况下建立 Android 库。为解决这个问题,我们提供了“FacebookSdk.setIsDebugEnabled(boolean)”方法,方便您直接从应用设置调试模式。这将实现记录 SDK 的调试信息。

此外,您还可以通过“FacebookSdk.addLoggingBehavior(LogginBehavior)”设置记录行为,为不同的消息类别启用记录。详情请参阅 Android SDK 参考文档,LoggingBehavior

分享对话框会根据用户操作回调“onSuccess”和“onCancel”。

  • “onSuccess”:当用户成功分享时。此外,如果用户向应用授予“publish_actions”权限,“Sharer.Result”类中还会有“postId”。如果用户登录未使用 Facebook 登录,也会在用户点击 Cancel(取消)时调用此方法。
  • “onCancel”:当用户点击分享对话框的“X”按钮时;或在用户使用 Facebook 登录功能登录并点击 Cancel(取消)时。

疑难解答

请求发布权限时,您可能会收到以下错误:

  • "Session: an attempt was made to request new permissions for a session that has a pending request"(会话:尝试请求新权限的会话有待审核的请求)或
  • "Attempted to authorize while a request is pending"(请求待审核时尝试授权)

此错误消息表示您的应用在前一个请求尚未完成时尝试请求新的权限。所有权限请求都是异步处理的,所以只有当前一个请求完成后才能请求新的权限。

请查看 SDK 随附的示例应用,例如:Scrumptious 或 Hello Facebook,了解如何在多个步骤内请求新权限。

如果记录内没有错误,则可能的原因是请求未被执行。要执行“GraphRequest”,请调用“executeAsync”方法。

如需登录或使用原生“分享”对话框,您需要向 Facebook 提供您用于为应用签名的密钥。

这是一个密钥的 SHA-1 哈希,可用于为应用签名。通常,至少会使用两个不同的密钥:一个用于开发和调试,一个用于发布。所以,请确保在应用的设置页面添加两个值。

详情请参阅 Android 版 SDK 入门,创建开发密钥哈希

最常见的原因是未在“AndroidManifest.xml”内设置“ContentProvider”。请确保将其随应用编号一同添加至“AndroidManifest.xml”文件。详情请参阅 Android 分享,前提条件