그래프 API 사용, iOS

그래프 API를 사용하여 Facebook 소셜 그래프에서 데이터를 가져오고 내보낼 수 있습니다.

여기에는 다음이 포함됩니다.

  • 소셜 컨텍스트를 제공하기 위해 프로필 정보를 가져옵니다.
  • 좋아요 또는 사진과 같은 사용자 정보를 가져옵니다.
  • Facebook에 게시물(동영상 또는 사진 등)을 게시합니다.
  • Facebook에 오픈 그래프 소식을 게시합니다.
  • 더 많은 기능을 보려면 그래프 API 문서를 참조하세요.

이 가이드에서는 iOS용 Facebook SDK를 사용하여 그래프 API에 대해 작업하는 방법을 설명합니다.

필수 조건

그래프 API를 호출하려면 Facebook을 통해 앱에 로그인하여 앱의 권한을 승인해야 합니다.

예를 들어, 이메일 주소를 가져오려면 앱의 email 권한이 승인되어야 합니다. 먼저 다음 내용을 익히세요.

또한 iOS SDK용으로 개발 환경과 앱을 설정해야 합니다. iOS, 시작하기 가이드를 참조하세요.

사용자 데이터 가져오기

SDK에는 그래프 API를 사용하여 작업할 클래스가 FBSDKGraphRequestFBSDKGraphRequestConnection, 이렇게 두 가지가 있으며 이는 Foundation 프레임워크의 NSURLRequestNSURLRequestConnection과 유사합니다.

FBSDKGraphRequest를 사용하기 위해 요청에 특정 그래프 API 엔드포인트를 제공합니다. 그런 다음 FBSDKGraphRequestConnection을 호출하여 요청을 시작하고 완료될 때까지 처리합니다.

개발자의 편의를 위해 SDK에는 암묵적으로 FBSDKGraphRequestConnection을 만들어 주는 FBSDKGraphRequeststartWithCompletionHandler: 메서드가 있습니다.

예를 들어, 현재 앱에 로그인된 사용자의 프로필 정보를 가져오려면 다음과 같이 호출합니다.

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 디버그 모드를 참조하세요.