Flutter Facebook集成核心插件facebook_core的使用

Flutter Facebook集成核心插件facebook_core的使用

Android

android/app/build.gradle文件中添加Facebook App ID:

android {
    defaultConfig {
        manifestPlaceholders = [
                FACEBOOK_APP_ID : "your facebook app id",
        ]
    }
}

请将your facebook app id替换为你的实际Facebook应用ID。

iOS

在项目根目录下创建app.xcconfig文件,并添加以下内容:

FACEBOOK_APP_ID=your facebook app id
FACEBOOK_DISPLAY_NAME=your facebook app display name

然后在Debug.xcconfigRelease.xcconfig文件中包含app.xcconfig

#include "app.xcconfig"

接下来,在Info.plist文件中添加以下配置:

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>CFBundleURLName</key>
        <string></string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>fb$(FACEBOOK_APP_ID)</string>
        </array>
    </dict>
</array>
<key>FacebookAppID</key>
<string>$(FACEBOOK_APP_ID)</string>
<key>FacebookDisplayName</key>
<string>$(FACEBOOK_DISPLAY_NAME)</string>
<key>LSApplicationQueriesSchemes</key>
<array>
    <string>fbapi</string>
    <string>fbapi20130214</string>
    <string>fbapi20130410</string>
    <string>fbapi20130702</string>
    <string>fbapi20131010</string>
    <string>fbapi20131219</string>
    <string>fbapi20140410</string>
    <string>fbapi20140116</string>
    <string>fbapi20150313</string>
    <string>fbapi20150629</string>
    <string>fbapi20160328</string>
    <string>fbauth</string>
    <string>fb-messenger-share-api</string>
    <string>fbauth2</string>
    <string>fbshareextension</string>
</array>

请确保将your facebook app idyour facebook app display name替换为你的实际Facebook应用ID和显示名称。

Flutter

pubspec.yaml文件中添加依赖:

dependencies:
  facebook_core:
    git:
      url: https://github.com/rxreader/flutter_facebook.git
      path: facebook_core

或者使用最新版本:

dependencies:
  facebook_core: ^${latestVersion}

完整示例代码

以下是一个完整的示例代码,展示如何使用facebook_core插件获取Facebook应用ID:

import 'package:facebook_core/facebook_core.dart';
import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  [@override](/user/override)
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Facebook Core'),
        ),
        body: ListView(
          children: <Widget>[
            ListTile(
              title: const Text('App ID'),
              onTap: () async {
                final String? appId = await FacebookSdk.instance.getApplicationId();
                print('App ID: ${appId ?? ''}');
              },
            ),
          ],
        ),
      ),
    );
  }
}

更多关于Flutter Facebook集成核心插件facebook_core的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter Facebook集成核心插件facebook_core的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在 Flutter 应用中集成 Facebook 登录和分享功能,可以使用 flutter_facebook_auth 插件,它提供了与 Facebook SDK 的集成。然而,如果你想直接使用 Facebook 的核心功能(如初始化 SDK、获取用户数据等),可以使用 facebook_core 插件。以下是如何使用 facebook_core 插件的基本步骤。

1. 添加依赖

首先,在 pubspec.yaml 文件中添加 facebook_core 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  facebook_core: ^1.0.0

然后运行 flutter pub get 来安装依赖。

2. 配置 Facebook 应用

Facebook 开发者平台 上创建一个新的应用,并获取应用的 App IDApp Secret

3. 配置 Android

android/app/src/main/AndroidManifest.xml 文件中添加以下内容:

<application
    android:label="Your App Name"
    android:icon="@mipmap/ic_launcher">
    <meta-data
        android:name="com.facebook.sdk.ApplicationId"
        android:value="@string/facebook_app_id"/>
</application>

android/app/src/main/res/values/strings.xml 文件中添加 facebook_app_id

<resources>
    <string name="facebook_app_id">YOUR_FACEBOOK_APP_ID</string>
</resources>

4. 配置 iOS

ios/Runner/Info.plist 文件中添加以下内容:

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>fbYOUR_FACEBOOK_APP_ID</string>
        </array>
    </dict>
</array>
<key>FacebookAppID</key>
<string>YOUR_FACEBOOK_APP_ID</string>
<key>FacebookDisplayName</key>
<string>Your App Name</string>
<key>LSApplicationQueriesSchemes</key>
<array>
    <string>fbapi</string>
    <string>fb-messenger-share-api</string>
    <string>fbauth2</string>
    <string>fbshareextension</string>
</array>

5. 初始化 Facebook SDK

在 Flutter 应用中初始化 Facebook SDK。通常在 main.dart 文件中进行初始化:

import 'package:flutter/material.dart';
import 'package:facebook_core/facebook_core.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await FacebookCore.init(
    appId: 'YOUR_FACEBOOK_APP_ID',
    autoLogAppEvents: true,
    xfbml: true,
    version: 'v12.0',
  );
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Facebook Core Example',
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter Facebook Core Example'),
        ),
        body: Center(
          child: Text('Hello, Facebook Core!'),
        ),
      ),
    );
  }
}

6. 使用 Facebook Core 功能

facebook_core 插件提供了与 Facebook SDK 的接口,你可以使用它来获取用户数据、处理登录等。以下是一个简单的示例,展示如何获取当前的访问令牌:

import 'package:facebook_core/facebook_core.dart';

Future<void> getAccessToken() async {
  final accessToken = await FacebookCore.accessToken;
  if (accessToken != null) {
    print('Access Token: ${accessToken.token}');
  } else {
    print('No access token available.');
  }
}

7. 处理登录

facebook_core 插件本身不提供直接处理登录的 API,通常你需要结合 flutter_facebook_auth 插件来处理 Facebook 登录。flutter_facebook_auth 插件提供了更高级的登录和用户数据获取功能。

8. 处理注销

你可以通过以下方式注销用户:

await FacebookCore.logOut();

9. 处理事件

你可以使用 FacebookCore.logEvent 方法来记录自定义事件:

FacebookCore.logEvent(
  name: 'CustomEvent',
  parameters: {
    'param1': 'value1',
    'param2': 'value2',
  },
);

10. 处理错误

在处理 Facebook 相关操作时,确保捕获和处理可能的错误:

try {
  final accessToken = await FacebookCore.accessToken;
  if (accessToken != null) {
    print('Access Token: ${accessToken.token}');
  } else {
    print('No access token available.');
  }
} catch (e) {
  print('Error: $e');
}
回到顶部