facebook.* (v4)

类型
修订版 版本 2024.3703
关键字 Facebook
平台 Android、iOS
另请参阅 Facebook 门户设置 (指南)
实现 Facebook (指南)

此文档适用于 Facebook v4 插件。我们强烈建议你修改代码以使用 Facebook v4a 插件,它是一个更新的异步版本,包含新的 facebook.init() API。

概述

Facebook 插件提供了一组用来访问 Facebook 社交网络的 API。这些函数允许用户登录/注销、发布消息和图像、检索用户状态、发送游戏邀请等。

重要提示

你的应用必须与单点登录(SSO) 配合良好。请阅读 Facebook 门户设置 指南,了解有关如何在你的单点登录启用 Facebook 的应用中实施

注册

的要求。Facebook 开发要求你在 Facebook 开发者门户 中注册。

语法

local facebook = require( "plugin.facebook.v4" )

函数

facebook.getCurrentAccessToken()

facebook.isFacebookAppEnabled()

facebook.login()

facebook.logout()

facebook.publishInstall()

facebook.request()

facebook.setFBConnectListener()

facebook.showDialog()

属性

facebook.isActive

事件

fbconnect

项目设置

若要使用此插件,请在 build.settingsplugins 表中添加一个条目。添加后,构建服务器将在构建阶段集成插件。

settings = {

    plugins =
    {
        ["plugin.facebook.v4"] =
        {
            publisherId = "com.coronalabs"
        },
    },
}

iOS

如果你的应用适用于 iOS,你还必须在 build.settings 中包含以下代码,以确保原生 Facebook 应用正常运行

settings = {

    iphone =
    {
        plist =
        {
            UIApplicationExitsOnSuspend = false,
            FacebookAppID = "XXXXXXXXXX",  -- Replace XXXXXXXXXX with your Facebook App ID
            CFBundleURLTypes =
            {
                { CFBundleURLSchemes = { "fbXXXXXXXXXX", } }  -- Replace XXXXXXXXXX with your Facebook App ID
            },
            -- Whitelist Facebook apps
            LSApplicationQueriesSchemes =
            {
                "fb",  -- Needed for the facebook-v4.isFacebookAppEnabled() API
                "fbapi",
                "fbauth2",
                "fb-messenger-api",
                "fbshareextension"
            },
        },
    },
}

请注意,必须指定几个关键部分

  • UIApplicationExitsOnSuspend — 为确保 Facebook 可以正确恢复你的应用,你必须包含 UIApplicationExitsOnSuspend = false。如果你出于其他原因将此参数设置为 true,你必须将其还原为 false(默认)。

  • FacebookAppID — 将此键设置为 FacebookAppID = "XXXXXXXXXX",并将 XXXXXXXXXX 替换为你的唯一 Facebook 应用 ID。

  • CFBundleURLTypes — 必须按显示的内容准确声明 CFBundleURLTypes 表,并且它必须包含一个名为 CFBundleURLSchemes 的表。在其中,包含你的 Facebook 应用 ID 并为其添加前缀 fb。因此,如果你的应用 ID 是 1234567890,你应该指定:"fb1234567890"

  • LSApplicationQueriesSchemes — 此白名单 URL 方案表确保你的应用和 Facebook SDK 正常一起运行。

Android

如果你的应用适用于 Android,你还必须在 build.settings 中包含Facebook 应用 ID

settings = 
{
    android =
    {
        facebookAppId = "XXXXXXXXXX",  -- Replace XXXXXXXXXX with your Facebook App ID
    },
}
注意

对于 Android,使用此插件时会自动添加以下权限/功能

  • "android.permission.INTERNET"

Solar2D 原生

iOS

如果你正在为 iOS 使用 Solar2D Native,你应该确保链接以下静态库

  • libBolts.a

  • libFBSDKCoreKit.a

  • libFBSDKLoginKit.a

  • libFBSDKShareKit.a

  • libfacebook.a

此外,你还需要向你的 Info.plist 添加多个属性。在外部文本编辑器中打开此文件,并将以下 XML 代码添加到其中

<key>UIApplicationExitsOnSuspend</key>
<false/>
<key>FacebookAppID</key>
<!-- Replace XXXXXXXXXX with your Facebook App ID -->
<string>XXXXXXXXXX</string>
<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLSchemes</key>
        <array>
            <!-- Replace XXXXXXXXXX with your Facebook App ID -->
            <string>fbXXXXXXXXXX</string>
        </array>
    </dict>
</array>
<key>LSApplicationQueriesSchemes</key>
<array>
    <string>fb</string>
    <string>fbapi</string>
    <string>fbauth2</string>
    <string>fb-messenger-api</string>
    <string>fbshareextension</string>
</array>
<key>CoronaDelegates</key>
<array>
    <string>CoronaFacebookDelegate</string>
</array>

此代码具有与适用于非 Solar2D Native实现,且增加了CoronaDelegates键,其中数组中包含CoronaFacebookDelegate。这样一来,Facebook 登录就能正常工作,还能在 Facebook 处于活动状态时暂停/恢复您的应用。

Android

如果您将 Solar2D Native 用于 Android,需要对 Android Studio 项目进行一些配置更改。请务必仔细遵循此步骤,因为即使是轻微的错误都可能导致调试头疼。

  1. 找到符合您的 Solar2D Native 版本的插件二进制包,并将"plugin.facebook.v4.jar"文件复制到项目的"libs"目录中。
注意

Facebook 插件包中的其他二进制文件将在 Facebook SDK 链接到 Android Studio 项目时为您复制/重新构建。

  1. 将以下权限添加到您的AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET"/>
  1. AndroidManifest.xmlapplication元素中,添加一个meta-data包含您的 Facebook 应用程序 ID 的标签。
<!-- Replace XXXXXXXXXX with your Facebook App ID -->
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="\ XXXXXXXXXX"/>
注意

由于您的 Facebook 应用程序 ID 是一个需要转换为字符串的数字,因此\在分配android:value时是必需的。

  1. 类似地,添加一个meta-data标签,其中包含Facebook 开发者门户中发布的显示名称。这可以在设置基本显示名称下找到.
<!-- Replace XXXXXXXXXX with your Facebook Display Name from the Facebook Developer Portal -->
<meta-data android:name="com.facebook.sdk.ApplicationName" android:value="XXXXXXXXXX"/>
注意

ApplicationNamemeta-data标签是使用共享对话框 所必需的。

  1. 接下来,将以下活动添加到您的AndroidManifest.xml
<activity android:name="com.facebook.FacebookActivity"
        android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
        android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<activity android:name="plugin.facebook.v4.FacebookFragmentActivity"
        android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 
        android:configChanges="keyboardHidden|screenSize|orientation"/>
  1. 下载 Corona 分叉的 Facebook SDK for Android,可在此处获得:此处
重要提示

由于 Facebook v4 在 Android 上使用的是 Facebook SDK 的修改版本,因此务必对 GitHub 上提供的 Facebook SDK 版本进行库引用。

  1. 通过以下方式链接至 Facebook SDK 的源代码文件新建导入模块在 Android Studio 中。进入新模块屏幕后,选择源目录字段旁边的[...]按钮,并浏览至上述步骤中提到的已下载的 Facebook SDK。

  2. 在已下载的 Facebook SDK 中查找facebook目录。确认选择该 Gradle 项目,然后单击新模块屏幕上的完成,将 Facebook SDK 作为 Solar2D Native 项目的模块导入。

  3. 在已下载的 Facebook SDK 中,在根目录中找到gradle.properties文件,并将其内容复制到您的 Android Studio 项目的gradle.properties文件中。

  4. 回到 Android Studio,打开build.gradle (Module: app)文件,并将此行添加到dependencies块的底部

compile project(':facebook')