Вход через Facebook для iOS — быстрое начало работы

Мы изменили конечные точки для Ограниченного входа. Теперь он доступен по адресу limited.facebook.com.

Когда люди входят в ваше приложение через Facebook, они могут предоставить ему разрешения, благодаря которым вы получите нужную информацию и сможете выполнять действия на Facebook от имени этих людей.

Следующие шаги позволяют добавить вход через Facebook в ваш проект приложения для iOS.

1. Вход

Войдите на Facebook, чтобы создать приложение или зарегистрироваться в качестве разработчика.

2. Настройка среды разработки

Настройте среду разработки перед тем, как использовать вход через Facebook для iOS.

Использование Swift Package Manager (SPM)
  1. Откройте Xcode и нажмите File > Swift Packages > Add Package Dependency (Файл > Пакеты Swift > Добавить зависимость пакета).
  2. В открывшемся диалоге введите URL репозитория: https://github.com/facebook/facebook-ios-sdk.
  3. В поле Version (Версия) введите номер версии последнего Facebook SDK для iOS.
  4. Следуя инструкциям на экране, выберите библиотеки, которые нужно использовать в проекте.

3. Регистрация и настройка приложения для работы с Facebook

Зарегистрируйте и настройте приложение для использования входа через Facebook, добавив свой идентификатор пакета.

Чтобы выполнить этот шаг, войдите.

4. Настройка проекта

Настройте файл (Info.plist) с помощью сниппета XML, содержащего информацию о вашем приложении.

После интеграции входа через Facebook определенные события в приложении будут автоматически регистрироваться и собираться для Events Manager, если только вы не отключите эту функцию. Подробнее о том, какая информация собирается и как отключить автоматическую регистрацию событий в приложении, см. в разделе Автоматическая регистрация событий в приложении.

  1. Нажмите правой кнопкой мыши Info.plist и выберите Open As ▸ Source Code (Открыть как исходный код).
  2. Скопируйте и вставьте приведенный ниже фрагмент XML-кода в тело файла (<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. В <array><string>, содержащемся в ключе [CFBundleURLSchemes], замените APP-ID на ID своего приложения.
  4. В <string>, содержащемся в ключе FacebookAppID, замените APP-ID на ID своего приложения.
  5. В <string>, содержащемся в ключе FacebookClientToken, замените CLIENT-TOKEN на значение из раздела Настройки > Расширенные > Маркер клиента на Панели приложений.
  6. В <string>, содержащемся в ключе FacebookDisplayName, замените APP-NAME на название своего приложения.
  7. Чтобы использовать диалоги Facebook (например "Вход", "Поделиться", "Приглашения в приложения" и т. д.), которые могут переключать пользователя на приложения Facebook, файл Info.plist вашего приложения также должен содержать следующий код:
    <key>LSApplicationQueriesSchemes</key>
    <array>
      <string>fbapi</string>
      <string>fb-messenger-share-api</string>
    </array>

Вы можете напрямую установить для автоматической регистрации событий в приложении значения "true" или "false", если добавите FacebookAutoLogAppEventsEnabled в качестве ключа в Info.plist.

Чтобы вход правильно работал в приложениях Mac Catalyst, в проект необходимо добавить функцию Keychain Sharing.
  1. При настройке цели приложения нажмите кнопку + Capability (Добавить функцию) на вкладке Signing & Capabilities (Подписи и функции).
  2. Найдите и выберите функцию Keychain Sharing.
  3. Убедитесь, что Keychain Sharing для цели задана.

5. Подключение делегата приложения

Замените код в AppDelegate.swift методе следующим кодом. Он инициализирует SDK при запуске приложения и позволяет SDK обрабатывать данные, полученные из нативного приложения Facebook при входе или публикации. В противном случае пользователю нужно быть авторизованным в Facebook, чтобы войти с помощью браузера в приложении.
    
// 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 функция открытия URL перенесена в SceneDelegate. Если вы используете iOS 13, добавьте следующий метод в SceneDelegate для правильной работы таких функций, как вход и публикация:
// 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]
    )
}

6. Добавление входа через Facebook в код

Добавьте в свое приложение для iOS кнопку "Вход через Facebook".

6а. Добавление входа через Facebook в код

Чтобы добавить в приложение кнопку "Вход" в стиле Facebook, добавьте в контроллер просмотра следующий фрагмент кода.
// Add this to the header of your file, e.g. in ViewController.swift 
import FacebookLogin

// Add this to the body
class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
	
        let loginButton = FBLoginButton()
        loginButton.center = view.center
        view.addSubview(loginButton)
    }
}
Затем вы сможете выполнить приложение и войти с помощью кнопки "Вход через Facebook".

6б. Проверка статуса входа

За один раз в приложение может войти только один человек. Каждого человека, который вошел в ваше приложение, мы представляем в виде AccessToken.current.
LoginManager настраивает этот маркер для вас, а при настройке AccessToken.current он также автоматически записывает его в хранилище связки ключей.
Маркер AccessToken содержит userID, который поможет вам идентифицировать пользователя.
Чтобы проверить существующий маркер при загрузке, обновите контроллер просмотра. Тогда пользователю не потребуется повторно выполнять вход, если он уже предоставил приложению необходимые разрешения:
override func viewDidLoad() {
    super.viewDidLoad()

    if let token = AccessToken.current,
        !token.isExpired {
        // User is logged in, do work such as go to next view controller.
    }
}
    

6в. Запрос разрешений

При использовании входа через Facebook приложение может запрашивать у людей разрешения на подмножество их данных. Чтобы вход через Facebook был доступен внешним пользователям, необходима расширенная версия разрешения public_profile.
Разрешения на чтение для кнопки входа через Facebook
Чтобы запросить дополнительные разрешения на чтение, установите свойство permissions для объекта FBLoginButton .
// Extend the code sample from 6a. Add Facebook Login to Your Code
// Add to your viewDidLoad method:
loginButton.permissions = ["public_profile", "email"]
  
Тогда приложение будет запрашивать у пользователя необходимые разрешения. Обратите внимание, что некоторые разрешения требуют проверки входа. Подробнее о разрешениях см. в статье Управление разрешениями.

7. Дальнейшие действия

Поздравляем, вы добавили вход через Facebook в свое приложение для iOS! Не забудьте изучить другие страницы документации, где вы найдете дополнительные инструкции.
Реализуйте обратный вызов с запросом на удаление данных для ответа на запрос людей об удалении их данных из Facebook.
Добавьте в приложение события, чтобы просматривать статистику, измерять результативность рекламы и создавать аудитории для таргетинга.
Ознакомьтесь с расширенными настройками входа через Facebook для приложений iOS.
Определяйте, к каким данным ваше приложение получит доступ с помощью входа через Facebook.
Узнайте, как устранять ошибки, возвращаемые Facebook SDK.
Протестируйте вход через Facebook, чтобы убедиться в его исправной работе.
В зависимости от того, какие данные из Facebook вы запрашиваете у людей, использующих вход через Facebook, перед запуском вам может потребоваться проверка приложения.
Информацию о том, как создать собственный процесс входа, см. в статье Разработка процесса входа вручную.