그래프 API를 사용하여 Facebook 소셜 그래프에서 데이터를 가져오고 내보낼 수 있습니다.
여기에는 다음이 포함됩니다.
이 가이드에서는 iOS용 Facebook SDK를 사용하여 그래프 API에 대해 작업하는 방법을 설명합니다.
그래프 API를 호출하려면 Facebook을 통해 앱에 로그인하여 앱의 권한을 승인해야 합니다.
예를 들어, 이메일 주소를 가져오려면 앱의 email
권한이 승인되어야 합니다. 먼저 다음 내용을 익히세요.
또한 iOS SDK용으로 개발 환경과 앱을 설정해야 합니다. iOS, 시작하기 가이드를 참조하세요.
SDK에는 그래프 API를 사용하여 작업할 클래스가 FBSDKGraphRequest
와 FBSDKGraphRequestConnection
, 이렇게 두 가지가 있으며 이는 Foundation 프레임워크의 NSURLRequest
와 NSURLRequestConnection
과 유사합니다.
FBSDKGraphRequest
를 사용하기 위해 요청에 특정 그래프 API 엔드포인트를 제공합니다. 그런 다음 FBSDKGraphRequestConnection
을 호출하여 요청을 시작하고 완료될 때까지 처리합니다.
개발자의 편의를 위해 SDK에는 암묵적으로 FBSDKGraphRequestConnection
을 만들어 주는 FBSDKGraphRequest
의 startWithCompletionHandler:
메서드가 있습니다.
예를 들어, 현재 앱에 로그인된 사용자의 프로필 정보를 가져오려면 다음과 같이 호출합니다.
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)") } }
그래프 API에서 단일 HTTP 요청으로 일괄 요청을 수행할 수 있습니다. 그래프 API, 일괄 요청 수행을 참조하세요.
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:
오버로드를 통해 일괄 매개변수도 지정할 수 있습니다. 여기에는 종속 요청이 있는 일괄 처리를 만드는 기능이 포함됩니다.
언제든지 그래프 API 엔드포인트와 작동할 FBSDKGraphRequests
를 수동으로 만들 수 있지만, iOS용 Facebook SDK에서는 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에서 공유하기를 참조하세요.
개체 ID를 그래프 경로로 하는 DELETE
요청을 전송하여 앱에서 만든 개체를 삭제할 수도 있습니다.
예를 들어, 사진을 페이지에 게시하고 '1234'라는 ID를 받았다고 가정합니다. 다음 코드에서는 사진을 삭제합니다.
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") } } }
그래프 API 탐색기로 요청을 실험하고 테스트할 수 있습니다.
그래프 API 디버그 모드도 사용할 수 있습니다. iOS SDK 문제 해결, 그래프 API 디버그 모드를 참조하세요.