개요

그래프 API는 Facebook의 플랫폼에서 데이터를 가져오고 내보내는 기본 방법으로, 앱에서 프로그래밍 방식으로 데이터를 검색하고, 새 소식을 게시하고, 광고를 관리하고, 사진을 업로드하고, 다양한 작업을 수행하기 위해 사용할 수 있는 낮은 수준의 HTTP 기반 API입니다.

기본 사항

그래프 API라는 이름은 '소셜 그래프'에서 따온 것으로, 소셜 그래프는 Facebook 정보를 나타냅니다. 다음 항목으로 구성됩니다.

  • 노드 - 기본적으로 사용자, 사진, 페이지, 댓글과 같은 개별 개체입니다.
  • 에지 - 개체 컬렉션과 단일 개체(예: 페이지의 사진, 사진의 댓글) 간의 연결입니다.
  • 필드 - 개체에 대한 데이터입니다(예: 사용자의 생일, 페이지의 이름).

일반적으로 특정 개체에 대한 데이터를 얻기 위해서는 노드, 단일 개체에서 개체 컬렉션을 얻으려면 에지, 컬렉션의 단일 개체 또는 각 개체에 대한 데이터를 얻으려면 필드를 사용합니다.

HTTP

그래프 API는 HTTP 기반이므로 cURL, urllib 등 HTTP 라이브러리가 있는 모든 언어에서 사용할 수 있습니다. 즉 브라우저에서 직접 Graph API를 사용할 수 있습니다. 예를 들어 브라우저에서 이 URL,

https://graph.facebook.com/facebook/picture?redirect=false

를 요청하는 것은 이 cURL을 수행하는 것과 같습니다.

curl -i -X GET \
 "https://graph.facebook.com/facebook/picture?redirect=false&access_token={valid-access-token-goes-here}"

액세스 토큰

아마도 위 cURL 요청에 access_token 매개변수와 자리 표시자 값이 있다는 것을 아셨을 것입니다. 대부분의 그래프 API 요청에는 액세스 토큰이 필요합니다. 궁극적으로 액세스 토큰 문서를 읽고 액세스 토큰의 작동 방식을 알아야 하지만, 현재 우선적으로 필요한 사항은 다음과 같습니다.

  • 거의 모든 그래프 API 요청에는 일종의 액세스 토큰이 필요합니다.
  • 액세스 토큰을 받는 가장 쉬운 방법은 Facebook 로그인을 구현하는 것입니다.

그래프 API 문서의 의사 코드 요청/응답 예에서는 액세스 토큰을 명시적으로 참조하지 않지만 응답을 받기 위해 요청에 액세스 토큰이 포함되어 있다고 가정해야 합니다.

구조

이에 대해서는 그래프 API 사용 가이드에 자세히 설명되어 있습니다. 일반적으로

  • 개별 개체에 대한 데이터를 가져오려면 노드를 사용합니다.
  • 노드에 연결된 개체의 컬렉션을 가져오거나 해당 컬렉션에 개체를 게시하려면 에지를 사용합니다.
  • 응답에 포함할 데이터를 지정하려면 필드를 사용합니다.

호스트 URL

거의 모든 요청이 graph.facebook.com 호스트 URL에 전달됩니다. 한 가지 예외는 graph-video.facebook.com을 사용하는 동영상 업로드입니다.

개체 ID

노드는 각각 고유한 ID를 갖는 개별 개체이므로, 노드에 대한 정보를 가져오려면 노드의 ID를 직접 쿼리합니다. 예를 들어, 공식 Facebook 페이지의 ID는 20531316728입니다. 페이지의 ID를 사용하여 직접 쿼리합니다.

GET graph.facebook.com
  /20531316728

노드에 대한 특정 데이터(필드라고 함)를 얻으려는 경우 fields 매개변수를 포함하고 응답에 반환할 필드를 지정할 수 있습니다. 페이지 노드 참조를 빠르게 확인하면 페이지 개체를 읽을 때 가져올 수 있는 필드 중 하나가 페이지의 커버 사진인 cover 필드라는 것을 알 수 있습니다. 쿼리는 다음과 같이 표시됩니다.

GET graph.facebook.com
  /20531316728?fields=cover

대부분의 노드에는 해당 노드에 연결된 개체의 컬렉션을 반환할 수 있는 에지가 있습니다. 에지를 쿼리하려면 노드 ID와 에지 이름을 모두 사용합니다. 페이지 노드 참조에 나열된 에지 중 하나는 photos 에지이며 페이지 소유의 모든 사진 개체를 반환합니다. 따라서, Facebook 페이지 소유의 모든 사진을 얻으려면 노드의 photos 에지를 쿼리합니다.

GET graph.facebook.com
  /20531316728/photos

일부 노드를 사용하면 POST 작업을 통해 필드를 업데이트할 수 있습니다. 예를 들어, Facebook 페이지의 관리자라면 다음과 같이 description 필드를 업데이트할 수 있습니다.

POST graph.facebook.com
  /20531316728?description=The%20OFFICIAL%20Facebook%20Page

에지를 사용하면 일반적으로 POST 작업을 수행하여 노드의 컬렉션에 새로운 개체를 게시할 수 있습니다. 다음은 Facebook 페이지 소유의 사진 컬렉션에 사진을 게시하는 방법입니다.

POST graph.facebook.com
  /20531316728/photos

물론 개체를 컬렉션에 게시하려면 일반적으로 사진의 URL, 제목, 설명 등 해당 개체에 대한 추가 필드가 필요합니다. 에지 참조 문서에는 필수 필드 및 선택 필드가 표시됩니다.

마지막으로 개체 ID에서 DELETE 작업을 수행하여 노드를 삭제할 수 있습니다.

DELETE graph.facebook.com
  /20531316728

버전

그래프 API에는 여러 버전이 있습니다. 버전 지정에 대해서는 앱 버전 가이드에서 자세히 알아볼 수 있습니다. 이 문서에서는 특정 버전을 호출하는 방법을 설명합니다.

정말 간단합니다. 요청 경로 앞에 v 문자와 버전 번호를 추가하면 됩니다. 예를 들어, 버전 2.9를 호출하는 방법은 다음과 같습니다.

GET graph.facebook.com
  /v2.9/20531316728/photos

버전 번호를 포함하지 않을 경우 이용 가능한 가장 오래된 버전이 기본적으로 사용되므로 요청에 버전 번호를 포함하는 것이 좋습니다.

그래프 API 변경 사항에는 이용 가능한 모든 버전이 나열되며 참조 문서를 사용하면 콘텐츠를 버전별로 필터링할 수 있습니다.

다음 단계

이제 그래프 API 사용 가이드에서 더욱 상세한 몇 가지 요청 및 응답과 그래프 API를 사용하여 수행할 수 있는 다른 액션에 대해 알아보겠습니다.