Получайте и отправляйте данные социального графа Facebook с помощью API Graph.
Вы сможете:
В этом руководстве рассказывается, как работать с API Graph с помощью Facebook SDK для iOS.
Для вызова API Graph кто-то должен войти в ваше приложение через Facebook и дать разрешения для вашего приложения.
Например, если вам нужно получить чей-то адрес электронной почты, у приложения должно быть разрешение email
. Обязательно ознакомьтесь со следующими статьями:
Кроме того, необходимо настроить среду разработки и приложение для работы с SDK для iOS. См. руководство по началу работы с iOS.
В SDK есть два класса для работы с API Graph: FBSDKGraphRequest
и FBSDKGraphRequestConnection
. Они сходны с классами NSURLRequest
и NSURLRequestConnection
во фреймворке Foundation.
Чтобы использовать класс FBSDKGraphRequest
, добавьте в запрос специальную конечную точку API Graph. Затем вызовите класс FBSDKGraphRequestConnection
, чтобы начать запрос и обработать его завершение.
Для удобства в SDK существует метод startWithCompletionHandler:
в классе FBSDKGraphRequest
, который неявным образом создает FBSDKGraphRequestConnection
.
Например, отправьте следующий вызов, чтобы получить информацию из профиля человека, который вошел в приложение:
guard AccessToken.current != nil else { return } let request = GraphRequest(graphPath: "me", parameters: [:]) request.start() { connection, result, error in if let result = result, error == nil { print("fetched user: \(result)") } }
В одном HTTP-запросе API Graph можно отправлять пакетные запросы. См. раздел API Graph: создание пакетных запросов.
SDK позволяет создать несколько запросов и добавить их в один и тот же экземпляр FBSDKGraphRequestConnection
. Старайтесь по возможности объединять запросы в пакеты, чтобы сократить сетевой трафик.
Например, запросить данные об отметках "Нравится" можно так:
guard let token = AccessToken.current else { return } if token.hasGranted("user_likes") { let meRequest = GraphRequest(graphPath: "me", parameters: [:]) let likesRequest = GraphRequest(graphPath: "me/likes", parameters: [:]) let connection = GraphRequestConnection() connection.add(meRequest) { connection, result, error in // Process the 'me' information } connection.add(likesRequest) { connection, result, error in // Process the 'likes' information } connection.start() }
Также можно указать параметры пакета с помощью перегрузки addRequest:completionHandler:
. Это позволит создать пакет с зависимыми запросами.
Вы всегда можете вручную создать объект FBSDKGraphRequests
для работы с конечными точками API Graph. Но удобнее будет сделать это с помощью Facebook SDK для iOS, который позволяет публиковать фото и видео посредством FBSDKShareKit.framework
. Например, чтобы поделиться фото, отправьте следующий запрос:
let image: UIImage! let content = SharePhotoContent() content.photos = SharePhoto(image: image, isUserGenerated: true) // Assuming self implements SharingDelegate let dialog = ShareDialog( viewController: self, content: content, delegate: self ) dialog.show()
Также можно публиковать видео, используя тип FBSDKShareVideoContent
. См. статью Публикация материалов в iOS.
Чтобы удалить объекты, созданные вашим приложением, отправьте запрос DELETE
и укажите ID объекта в качестве пути в графе.
Например, вы опубликовали фото на Странице и получили ID публикации 1234. Чтобы удалить фото, используйте следующий код:
guard let token = AccessToken.current else { return } if token.hasGranted("pages_manage_posts") { let request = GraphRequest(graphPath: "1234", parameters: [:], httpMethod: .delete) request.start { connection, result, error in if error == nil { print("Deleted photo") } } }
Чтобы поэкспериментировать с запросами и протестировать их, воспользуйтесь Graph API Explorer.
Кроме того, можно включить режим отладки в API Graph. См. раздел Устранение неполадок в SDK для iOS: режим отладки API Graph.