본문 바로가기

TIP

[FaceBook] Graph API 기초 - 짱우의 코딩일기 - 티스토리

반응형

  입사하기 전에 회사 다니게 되면 퇴근 후에 매일 관심있던 분야 공부를 해야지 라는 생각을 했었는데 막상 입사하고 보니 적응하고 여기저기 눈치봐서 그런지 퇴근하고 나면 매일 누워있었다. 더이상 이러면 안되겠다는 생각이 들어서 간단하게 API 부터 공부를 해보려고 결심을 했다. 그래서 입사하고 처음으로 공부를 시작한 분야는 FaceBook의 Graph API다.

  모든 공부 내용은 Facebook Developer의 내용을 바탕으로 진행했다.

  참고로 이 글은 기초적인 내용만 담았고 내가 실습해본 내용은 추후에 게시할 예정이다.


개요

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

기본 사항

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

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

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

액세스 토큰

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

  위와 같이 cURL에는 access_token 매개변수와 자리 표시자 값이 있는데 대부분의 Graph API 요청에는 액세스 토큰이 필요하다. 필요한 사항은 다음과 같다.

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

구조

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

호스트 URL

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

개체 ID

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

curl -i -X GET "https://graph.facebook.com/20531316728?access_token={access-token}"

 

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

curl -i -X GET "https://graph.facebook.com/20531316728?fields=cover&access_token={access-token}"

 

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

curl -i -X GET "https://graph.facebook.com/20531316728/photos?access_token={access-token}"

 

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

curl -i -X POST "https://graph.facebook.com/20531316728?description=The OFFICIAL Facebook Page&access_token={access-token}"

 

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

curl -i -X POST "https://graph.facebook.com/20531316728/photos?access_token={access-token}"

 

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

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

curl -i -X DELETE "https://graph.facebook.com/20531316728?access_token={access-token}"

 

반응형