Управление Страницей

В этом документе рассказывается, как выполнять для Страницы Facebook следующие действия:

  • получать список страниц, на которых вы можете получать действие, в том числе:
    • конкретные действия, которые вы можете выполнять на каждой Странице;
    • маркеры доступа к Странице для каждой Страницы, которую вы можете использовать для вызовов API;
  • получать сведения об обновлении для Страницы;
  • получать настройки обновления для Страницы;
  • получать уведомления о предлагаемых Meta изменениях для реализации на вашей Странице;
    • принимать или отклонять эти предлагаемые изменения;
  • получать отзывы для Страницы;
  • блокировать пользователей на Странице.

Прежде чем начать

Предполагается, что вы ознакомились с обзором Pages 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.

Пользователь вашего приложения должен иметь права на выполнение задач CREATE_CONTENT, MANAGE и (или) MODERATE на Странице, указываемой в запросах API.

Рекомендации

При тестировании вызова API можно добавить параметр access_token и задать в нем маркер доступа. Однако при выполнении безопасных вызовов из приложения следует использоваться класс маркера доступа.

Для удобства чтения примеры запросов отформатированы. Замените выделенный жирным шрифтом и курсивом текст, например page_id, собственными значениями.

Страницы, задачи и маркеры

Один вызов API может предоставить много информации для Страниц, на которых вы можете выполнять действия.

Получение своих Страниц

Чтобы получить список всех Страниц, на которых вы можете выполнять задачи, задач, которые вы можете выполнять на каждой Странице, и краткосрочных маркеров доступа к странице для каждой Страницы, отправьте запрос GET к конечной точке /user_id/accounts с указанием маркера доступа пользователя.

Пример запроса

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, вы можете получить список других людей, которые могут выполнять задачи на этой Странице, и задач, которые может выполнять каждый из них.

Чтобы получить список людей и задач, которые они могут выполнять на Странице, отправьте запрос GET к конечной точке /page_id/roles.

Пример запроса

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

В случае успеха приложение получит ответ JSON, содержащий имена людей, их ID внутри страницы и задачи, которые они могут выполнять на Странице.

Пример ответа

{
  "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 на Странице, вы можете использовать маркер доступа к Странице или для вашего приложения одобрено обращение к общедоступному контенту Страницы, вы можете использовать маркер доступа пользователя, чтобы посмотреть сведения о Странице, такие как информация о ней, электронный адрес, часы работы и т. д.

Получение сведений

Чтобы получить сведения о Странице, отправьте запрос GET к конечной точке /page_id, указав в параметре fields сведения о Странице, которые нужно посмотреть.

Примечание: конечную точку /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 на Странице, вы можете отправить запрос POST к конечной точке /page_id с указанием маркера доступа к Странице и параметров, которые нужно обновить, например about.

Пример запроса

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!",
         }'

В случае успеха ваше приложение получить ответ JSON, в котором параметр success будет иметь значение true.

Предлагаемые Meta изменения

Иногда Meta предлагает внести изменения в сведения о Странице, например исправить опечатку или обновить категории Страницы, чтобы людям было проще находить ее. Чтобы получать эти уведомления, вам нужно подписаться на Webhooks page_upcoming_change и (или) page_change_proposal.

Получив информацию, вы можете:

  • ничего не предпринимать, чтобы изменения вступили в силу в указанное в уведомлении время;
  • принять изменения, чтобы они вступили в силу сразу же;
  • отклонить изменения, чтобы не делать их.

Принятие или отклонение предлагаемого изменения

Чтобы явным принять или отклонить предлагаемое изменение, отправьте запрос POST к конечной точке /page_change_proposal_id и установите для поля accept значение true, чтобы принять изменение, или false, чтобы отклонить его. page_change_proposal_id — это значение proposal.id, полученное в уведомлении Webhooks page_upcoming_change, или значение value.id, полученное в уведомлении Webhooks page_change_proposal.

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

В случае успеха ваше приложение получит ответ JSON, в котором параметр success будет иметь значение true.

Настройки Страницы

Если вы можете выполнять задачу MANAGE на Странице, вы можете отправить запрос GET к конечной точке /page_id/settings с указанием маркера доступа к Странице, чтобы обновить сведения для этой Страницы.

Пример запроса

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

В случае успеха ваше приложение получит ответ JSON, содержащий массив объектов, в параметре setting каждого из которых указаны настройки Страницы и их значения, true или false.

Пример ответа

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

Обновление настройки

Чтобы обновить настройку Страницы, отправьте запрос POST к конечной точке /page_id/settings, указав в параметре 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"},
         }'

В случае успеха ваше приложение получит ответ JSON, в котором параметр success будет иметь значение true.

Получение отзывов

Вы можете получить отзывы для Страницы, в том числе имя человека, оставившего отзыв, его ID внутри страницы, характер рекомендации (положительная или отрицательная), а также текст отзыва. Для этого отправьте запрос GET к конечной точке /page_id/ratings.

Пример запроса

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

В случае успеха приложение получит ответ JSON, содержащий объекты отзывов. Каждый объект содержит следующие параметры:

  • created_time — время создания отзыва;
  • recommendation_type со значением positive или negative;
  • review_text — контент отзыва;
  • объект reviewer с параметрами name и id, указывающими на автора отзыва.
{
  "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"
      }
    },
...
  ]
}

Блокирование пользователя

Чтобы запретить пользователю оставлять комментарии на Странице, отправьте запрос POST к конечной точке /page_id/blocked, указав в параметре 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",
         }'

В случае успеха приложение получит ответ JSON, в котором для ID внутри страницы будет установлено значение true.

{
 "psid_to_block": true
}