Getting Started with the Facebook SDK for iOS

This guide shows you how to integrate your iOS app with Facebook using the Facebook SDK for iOS.

Beginning with SDK v13.0 a Client Token is required for all calls to the Graph API.

The Facebook SDK enables:

Before You Start

You will need:

Get Your App ID

Each app that you create has a unique ID. To get the ID for an app, do the following:

  1. Sign into your developer account.
  2. Open the Apps page.
  3. Find your app and click the App ID. The app ID is copied to the clipboard.

Get Your Client Token

Each app that you create has a unique client token that you use to access Facebook. For more information, see Access Tokens. To get the Client Token for an app, do the following:

  1. Sign into your developer account.
  2. On the Apps page, select an app to open the dashboard for that app.
  3. On the Dashboard, navigate to Settings > Advanced > Security > Client token.

Step 1: Set Up Your Development Environment

  1. In Xcode, click File > Swift Packages > Add Package Dependency.
  2. In the dialog that appears, enter the repository URL: https://github.com/facebook/facebook-ios-sdk.
  3. In Version, select Up to Next Major and the default option.
  4. Complete the prompts to select the libraries you want to use in your project.
  5. If You Want ToAdd This Package to your project

    Allow your app to use the Facebook services

    FacebookCore

    Allow users to log into your app and for your app to ask for permissions to access data

    FacebookLogin

    Allow your app to share content on Facebook

    FacebookShare

    Allow users to log into your app to enable engagement and promote social features

    FacebookGamingServices

Step 2: Configure Your Project

Configure the Info.plist file with an XML snippet that contains data about your app.
  1. Right-click Info.plist, and choose Open As ▸ Source Code.
  2. Copy and paste the following XML snippet into the body of your file ( <dict>...</dict>).
    <key>CFBundleURLTypes</key>
    <array>
      <dict>
      <key>CFBundleURLSchemes</key>
      <array>
        <string>fbAPP-ID</string>
      </array>
      </dict>
    </array>
    <key>FacebookAppID</key>
    <string>APP-ID</string>
    <key>FacebookClientToken</key>
    <string>CLIENT-TOKEN</string>
    <key>FacebookDisplayName</key>
    <string>APP-NAME</string>
  3. In <array><string> in the key [CFBundleURLSchemes], replace APP-ID with your App ID.
  4. In <string> in the key FacebookAppID, replace APP-ID with your App ID.
  5. In <string> in the key FacebookClientToken, replace CLIENT-TOKEN with the value found under Settings > Advanced > Client Token in your App Dashboard.
  6. In <string> in the key FacebookDisplayName, replace APP-NAME with the name of your app.
  7. To use any of the Facebook dialogs (e.g., Login, Share, App Invites, etc.) that can perform an app switch to Facebook apps, your application's Info.plist also needs to include the following:
    <key>LSApplicationQueriesSchemes</key>
    <array>
      <string>fbapi</string>
      <string>fb-messenger-share-api</string>
    </array>
Your project will need to include the Keychain Sharing capability in order for login to work in Mac Catalyst applications.
  1. Select the + Capability button in the Signing & Capabilities tab when configuring your app target.
  2. Find and select the Keychain Sharing capability.
  3. Ensure that the Keychain Sharing capability is listed for the target.

Step 3: Connect the App Delegate

Replace the code in AppDelegate.swift method with the following code. This code initializes the SDK when your app launches, and allows the SDK handle logins and sharing from the native Facebook app when you perform a Login or Share action. Otherwise, the user must be logged into Facebook to use the in-app browser to login.
    
// AppDelegate.swift
import UIKit
import FacebookCore

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {    
    func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
    ) -> Bool {          
        ApplicationDelegate.shared.application(
            application,
            didFinishLaunchingWithOptions: launchOptions
        )

        return true
    }
          
    func application(
        _ app: UIApplication,
        open url: URL,
        options: [UIApplication.OpenURLOptionsKey : Any] = [:]
    ) -> Bool {
        ApplicationDelegate.shared.application(
            app,
            open: url,
            sourceApplication: options[UIApplication.OpenURLOptionsKey.sourceApplication] as? String,
            annotation: options[UIApplication.OpenURLOptionsKey.annotation]
        )
    }  
}

iOS 13 moved opening URL functionality to the SceneDelegate. If you are using iOS 13, add the following method to your SceneDelegate so that operations like logging in or sharing function as intended:
// SceneDelegate.swift
import FacebookCore
  ...
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
    guard let url = URLContexts.first?.url else {
        return
    }

    ApplicationDelegate.shared.application(
        UIApplication.shared,
        open: url,
        sourceApplication: nil,
        annotation: [UIApplication.OpenURLOptionsKey.annotation]
    )
}

Step 4: Build and Then Run Your Project in the Simulator

In Xcode, select an iOS simulator and click Run. Xcode builds your project and then launches the most recent version of your app running in Simulator.

Step 5: See the Results in Events Manager


The Events Manager displays the events you send to Facebook. If this is the first time you launched your app with this code, you may have to wait at least 20 minutes before your events appear.
Note: Events may take up to 20 minutes to appear in the dashboard.

Next Steps

To learn how to implement App Events and other Facebook products to your app, click one of the buttons below.

Sharing in iOSAdd Facebook LoginAdd App EventsUse Graph API
Advanced Configuration