페이지 관리

이 문서에서는 Facebook 페이지에서 다음의 작업을 수행하는 방법을 보여줍니다.

  • 다음에 대해 작업을 수행할 수 있는 페이지 리스트를 가져오기:
    • 각 페이지에서 수행할 수 있는 특정 작업
    • API 호출을 테스트하는 데 사용할 수 있는 각 페이지의 페이지 액세스 토큰
  • 페이지 상세 정보 가져오기 및 업데이트
  • 페이지 설정 가져오기 및 업데이트
  • Meta가 페이지에 구현할 예정인 추천 변경 사항에 대한 알림 가져오기
    • 이러한 추천 변경 사항에 대한 수락 또는 거부
  • 페이지 리뷰 가져오기
  • 페이지에서 사용자 차단

시작하기 전에

이 가이드에서는 페이지 API 개요를 읽은 것으로 가정합니다.

페이지에서 작업을 수행할 수 있는 사용자의 경우, Facebook 로그인을 구현하여 다음의 권한을 요청하고 사용자 또는 페이지 액세스 토큰을 받아야 합니다.

  • pages_manage_engagement
  • pages_manage_metadata
  • pages_manage_posts
  • pages_read_engagement
  • pages_read_user_engagement
  • pages_show_list
  • publish_video 권한(페이지에 동영상을 게시하는 경우)

API 요청에서 비즈니스 시스템 사용자를 사용하는 경우 business_management 권한이 필요합니다.

앱 사용자는 API 요청에서 페이지에 대한 CREATE_CONTENT, MANAGE 및/또는 MODERATE 작업을 수행할 수 있어야 합니다.

모범 사례

API 호출을 테스트할 때 액세스 토큰으로 설정된 access_token 매개변수를 포함할 수 있습니다. 그러나 앱에서 보안 호출을 수행할 때는 액세스 토큰 클래스를 사용합니다.

요청 예시는 가독성을 높이기 위해 형식을 지정했습니다. page_id와 같은 굵은 글꼴 값, 기울임꼴 값을 자신의 값으로 바꾸세요.

페이지, 작업 및 토큰

한 번의 API 호출은 작업을 수행할 수 있는 페이지에 대해 많은 정보를 제공할 수 있습니다.

페이지 가져오기

작업을 수행할 수 있는 모든 페이지, 각 페이지에서 수행할 수 있는 작업, 각 페이지의 단기 실행 페이지 액세스 토큰으로 구성된 리스트를 가져오려면 사용자 액세스 토큰을 사용하여 /user_id/accounts 엔드포인트로 GET 요청을 보내세요.

요청 예시

curl -i -X GET 
     "https://graph.facebook.com/user_id/accounts"

요청에 성공하면 앱은 페이지 개체의 배열을 포함하는 JSON 응답을 받게 됩니다. 각 페이지 개체에는 다음 항목이 포함됩니다.

  • 페이지 이름
  • 페이지 ID
  • 페이지 카테고리, 카테고리 이름 및 ID
  • 단기 실행 페이지 액세스 토큰
  • 사용자가 페이지에서 수행할 수 있는 모든 작업

응답 예시

{
  "data": [
    {
      "access_token": "{facebook-for-developers-page-access-token}",
      "category": "Internet Company",
      "category_list": [
        {
          "id": "2256",
          "name": "Internet Company"
        }
      ],
      "name": "Facebook for Developers",
      "id": "{facebook-for-developers-page-id}",
      "tasks": [
        "ANALYZE",
        "ADVERTISE",
        "MODERATE",
        "CREATE_CONTENT"
      ]
    },
    {
      "access_token": "{my-outlandish-stories-page-access-token}",
      "category": "Blogger",
      "category_list": [
        {
          "id": "361282040719868",
          "name": "Blogger"
        }
      ],
      "name": "My Outlandish Stories",
      "id": "{my-outlandish-stories-page-id}",
      "tasks": [
        "ANALYZE",
        "ADVERTISE",
        "MODERATE",
        "CREATE_CONTENT",
        "MANAGE"
      ]
    },
...
  ]
}

다른 사람의 작업 가져오기

페이지에서 MANAGE 작업을 수행할 수 있을 경우, 각 사용자가 수행할 수 있는 작업을 포함하여 해당 페이지에서 작업을 수행할 수 있는 다른 사용자의 리스트를 가져올 수 있습니다.

사용자와 이들이 페이지에서 수행할 수 있는 작업의 리스트를 가져오려면 /page_id/roles 엔드포인트로 GET 요청을 보내세요.

요청 예시

curl -i -X GET "https://graph.facebook.com/page_id/roles"

요청에 성공하면 앱은 사용자 이름, 이들의 페이지 범위 ID, 각 사용자가 페이지에서 수행할 수 있는 작업이 포함된 JSON 응답을 받게 됩니다.

응답 예시

{
  "data": [
    {
      "name": "Person One",
      "id": "page_scoped_id_for_one"
        "tasks": [
          "ANALYZE"
        ]
    },
    {
      "name": "Person Two",
      "id": "page_scoped_id_for_two",
      "tasks": [
        "ANALYZE",
        "ADVERTISE",
        "MODERATE",
        "CREATE_CONTENT",
        "MANAGE"
      ]
    },
...
  ],
}

페이지 상세 정보

페이지에서 MANAGE 작업을 수행할 수 있을 경우, 페이지 액세스 토큰을 사용할 수 있습니다. 또는 앱이 페이지 공개 콘텐츠 액세스 기능에 대한 승인을 받은 경우, 사용자 액세스 토큰을 사용하여 정보, 이메일, 운영 시간 등의 페이지 상세 정보를 확인할 수 있습니다.

상세 정보 가져오기

페이지에 대한 상세 정보를 가져오려면 fields 매개변수를 확인하려는 페이지 상세 정보로 설정하고 /page_id 엔드포인트로 GET 요청을 보내세요.

참고:/pages/search 엔드포인트를 사용하여 페이지 공개 콘텐츠 액세스 기능을 사용할 때의 페이지 ID를 찾을 수 있습니다.

요청 예시

curl -i -X GET "https://graph.facebook.com/page_id \
     ?fields=about,attire,bio,location,parking,hours,emails,website"

요청에 성공하면 앱은 요청한 필드 값이 포함된 JSON 응답을 받게 됩니다. 응답에서 필드가 반환되지 않으면 페이지에서 이 값을 설정하지 않은 것입니다. 예를 들어 페이지에서 attire 필드를 설정하지 않았다면 이 필드가 응답에 반환되지 않습니다.

상세 정보 업데이트

페이지에서 MANAGE 작업을 수행할 수 있을 경우, 페이지 액세스 토큰을 사용하여 about 매개변수 등과 같이 업데이트하고자 하는 매개변수와 함께 /page_id 엔드포인트로 POST 요청을 보낼 수 있습니다.

요청 예시

curl -i -X POST "https://graph.facebook.com/v21.0/page_id" \
     -H "Content-Type: application/json" \
     -d '{
           "about":"This is an awesome cafe located downtown!",
         }'

요청에 성공하면 앱은 successtrue로 설정된 JSON 응답을 받게 됩니다.

Meta에서 제안한 변경 사항

Meta는 오타를 수정하거나 페이지에서 카테고리를 업데이트하는 등, 페이지 상세 정보에 대한 변경 사항을 수시로 제안함으로써 사용자가 페이지를 더 잘 찾을 수 있도록 지원합니다. 이러한 알림을 받으려면 page_upcoming_change 및/또는 page_change_proposal Webhooks를 구독해야 합니다.

알림을 받고 나면 다음 중 하나를 수행할 수 있습니다.

  • 다른 작업 필요 없이 변경 사항이 알림에 지정된 시각에 적용되도록 합니다.
  • 변경 사항을 적극적으로 수락하고 변경 사항이 즉시 적용되도록 합니다.
  • 변경 사항을 적극적으로 거부하고 변경 사항이 적용되지 않도록 합니다.

제안된 변경 사항에 대한 수락 또는 거부

제안된 변경 사항을 적극적으로 수락하거나 거부하려면 /page_change_proposal_id 엔드포인트로 POST 요청을 보내세요. 이때 accept 필드를 true로 설정하여 변경 사항을 수락하거나 false로 설정하여 변경 사항을 거부합니다. page_change_proposal_idpage_upcoming_change Webhooks 알림에서 받는 proposal.id 값이거나 page_change_proposal Webhooks 알림에서 받은 value.id 값입니다.

curl -i -X POST "https://graph.facebook.com/v21.0/page_change_proposal_id" \
     -H "Content-Type: application/json" \
     -d '{
           "accept":"true",
         }'

요청에 성공하면 앱은 successtrue로 설정된 JSON 응답을 받게 됩니다.

페이지 설정

페이지에서 MANAGE 작업을 수행할 수 있을 경우, 페이지 액세스 토큰을 사용하여 /page_id/settings 엔드포인트로 GET 요청을 보내서 해당 페이지에 대한 모든 설정을 리스트로 가져옵니다.

요청 예시

curl -i -X GET "https://graph.facebook.com/v21.0/page_id/settings"

요청에 성공하면 앱은 개체 배열이 포함된 JSON 응답을 받게 됩니다. 각 개체는 페이지 설정과 그 값(true 또는 false)으로 설정된 setting입니다.

응답 예시

{
  "data": [
    {
      "setting": "USERS_CAN_POST",
      "value": false
    },
    {
      "setting": "USERS_CAN_MESSAGE",
      "value": true
    },
    {
      "setting": "USERS_CAN_POST_PHOTOS",
      "value": true
    },
    ...
  ]
}

설정 업데이트

페이지에 대한 설정을 업데이트하려면 /page_id/settings 엔드포인트로 POST 요청을 보내세요. 이때 option 매개변수는 업데이트하고자 하는 설정으로 설정합니다.

요청 예시

curl -i -X POST "https://graph.facebook.com/v21.0/page_id/settings" \
     -H "Content-Type: application/json" \
     -d '{
           "option":{"USERS_CAN_MESSAGE": "true"},
         }'

요청에 성공하면 앱은 successtrue로 설정된 JSON 응답을 받게 됩니다.

리뷰 가져오기

긍정적인 추천이든 부정적인 추천이든 리뷰어의 이름, 페이지 범위 ID를 포함한 페이지 리뷰와 리뷰 텍스트를 가져오려면 /page_id/ratings 엔드포인트로 GET 요청을 보낼 수 있습니다.

요청 예시

curl -i -X GET "https://graph.facebook.com/page_id/ratings" 

요청에 성공하면 앱은 리뷰 개체가 포함된 JSON 응답을 받게 됩니다. 각 개체에는 다음 항목이 포함됩니다.

  • 리뷰가 생성된 시각으로 설정된 created_time
  • positive 또는 negative로 설정된 recommendation_type
  • 리뷰 콘텐츠로 설정된 review_text
  • 해당 리뷰를 작성한 사용자의 nameid를 포함한 reviewer 개체
{
  "data": [
    {
      "created_time": "unixtimestamp",
      "recommendation_type": "positive",
      "review_text": "I love this page!",
      "reviewer": {
        "name": "Person One",
        "id": "psid_for_one"
      }
    },
    {
      "created_time": "unixtimestamp",
      "recommendation_type": "positive",
      "review_text": "This page is wonderful!",
      "reviewer": {
        "name": "Person Two",
        "id": "psid_for_two"
      }
    },
...
  ]
}

사용자 차단

사용자가 페이지에 댓글을 작성하지 못하도록 차단하려면 /page_id/blocked 엔드포인트로 POST 요청을 보내세요. 이때 user 매개변수는 차단하고자 하는 사용자의 페이지 범위 ID로 설정합니다.

요청 예시

curl -i -X POST "https://graph.facebook.com/v21.0/page_id/blocked"
     -H "Content-Type: application/json" \
     -d '{
           "user":"psid_to_block",
         }'

요청에 성공하면 앱은 페이지 범위 ID를 true로 설정한 JSON 응답을 받게 됩니다.

{
 "psid_to_block": true
}