Вход через 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, перед запуском вам может потребоваться проверка приложения.
Информацию о том, как создать собственный процесс входа, см. в статье Разработка процесса входа вручную.