Версия API Graph

/{object-id}/comments

Эта статья посвящена границе контекста /comments, которую используют многие узлы API Graph. Ее структура и принцип работы одинаковы для всех узлов. Граница контекста /comments есть у следующих объектов:

Объекты комментариев могут иметь границу контекста /comments, которая называется ответами на комментарии. Они имеют такую же структуру, однако следует обращать внимание на модификаторы этих границ контекста.

Чтение

Возвращает комментарий к объекту.

Поле id конечной точки /PAGEPOST-ID/comments больше не возвращается для приложений, которые используют функцию доступа к общедоступному контенту Страницы. Для получения ID комментариев к публикации Страницы у вас должны быть права модератора на этой Странице. Это изменение вступает в силу начиная с версии 11.0 и будет реализовано во всех версиях 7 сентября 2021 г.

Новая версия Страниц

Новая версия Страниц поддерживает конечную точку /comments для следующих объектов:

  • альбом;
  • комментарий;
  • ссылка;
  • страница;
  • публикация на странице;
  • фото;
  • публикация;
  • комментарий к публикации.

Разрешения

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

Ограничения

  • При обращении к сообщениям, фотографиям, альбомам, видео, отметкам "Нравится" и реакциям пользователей информация о профиле и комментарии других пользователей не будут возвращаться, если это не разрешено самими пользователями.
  • Запрос возвращает комментарии с фильтрацией по умолчанию. Чтобы получить все возможные комментарии (в зависимости от ваших разрешений), задайте для параметра filter значение stream или используйте поле order.
  • Новые Страницы могут оставлять комментарии от имени Страницы как на новых, так и на классических Страницах. При этом классические Страницы не могут оставлять комментарии на новых.
  • Если используется маркер доступа пользователя, конечная точка /comments возвращает пустые данные для следующих узлов:
  • Поле idконечной точки /PAGEPOST-ID/comments для приложений, которые используют функцию доступа к общедоступному контенту Страницы, больше не возвращается. Для получения ID комментариев к публикации Страницы у вас должны быть права модератора на этой Странице.
  • Если у объекта десятки тысяч комментариев, при разбиении на страницы могут действовать ограничения. Подробнее о разбиении на страницы см. в руководстве по использованию API Graph.

Пример

Graph API Explorer
GET /v21.0/{object-id}/comments HTTP/1.1
Host: graph.facebook.com
/* PHP SDK v5.0.0 */
/* make the API call */
try {
  // Returns a `Facebook\FacebookResponse` object
  $response = $fb->get(
    '/{object-id}/comments',
    '{access-token}'
  );
} catch(Facebook\Exceptions\FacebookResponseException $e) {
  echo 'Graph returned an error: ' . $e->getMessage();
  exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
  echo 'Facebook SDK returned an error: ' . $e->getMessage();
  exit;
}
$graphNode = $response->getGraphNode();
/* handle the result */
/* make the API call */
FB.api(
    "/{object-id}/comments",
    function (response) {
      if (response && !response.error) {
        /* handle the result */
      }
    }
);
/* make the API call */
new GraphRequest(
    AccessToken.getCurrentAccessToken(),
    "/{object-id}/comments",
    null,
    HttpMethod.GET,
    new GraphRequest.Callback() {
        public void onCompleted(GraphResponse response) {
            /* handle the result */
        }
    }
).executeAsync();
/* make the API call */
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
                               initWithGraphPath:@"/{object-id}/comments"
                                      parameters:params
                                      HTTPMethod:@"GET"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection,
                                      id result,
                                      NSError *error) {
    // Handle the result
}];

Параметры

GET /v21.0/{object-id}/comments?summary=1&filter=toplevel HTTP/1.1
Host: graph.facebook.com
/* PHP SDK v5.0.0 */
/* make the API call */
try {
  // Returns a `Facebook\FacebookResponse` object
  $response = $fb->get(
    '/{object-id}/comments?summary=1&filter=toplevel',
    '{access-token}'
  );
} catch(Facebook\Exceptions\FacebookResponseException $e) {
  echo 'Graph returned an error: ' . $e->getMessage();
  exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
  echo 'Facebook SDK returned an error: ' . $e->getMessage();
  exit;
}
$graphNode = $response->getGraphNode();
/* handle the result */
/* make the API call */
FB.api(
    "/{object-id}/comments",
    {
        "summary": true,
        "filter": "toplevel"
    },
    function (response) {
      if (response && !response.error) {
        /* handle the result */
      }
    }
);
Bundle params = new Bundle();
params.putBoolean("summary", true);
params.putString("filter", "toplevel");
/* make the API call */
new GraphRequest(
    AccessToken.getCurrentAccessToken(),
    "/{object-id}/comments",
    params,
    HttpMethod.GET,
    new GraphRequest.Callback() {
        public void onCompleted(GraphResponse response) {
            /* handle the result */
        }
    }
).executeAsync();
NSDictionary *params = @{
  @"summary": @YES,
  @"filter": @"toplevel",
};
/* make the API call */
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
                               initWithGraphPath:@"/{object-id}/comments"
                                      parameters:params
                                      HTTPMethod:@"GET"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection,
                                      id result,
                                      NSError *error) {
    // Handle the result
}];
Параметр Описание

summary

Логическое значение

Краткие сведения о метаданных для комментариев к объекту. Обратите внимание, что эти метаданные содержат параметр order, который определяет порядок сортировки комментариев.

filter

Перечисление { toplevel, stream }

Если человек может ответить на комментарий, вы можете фильтровать комментарии на основании комментариев верхнего уровня, комментариев, оставленных непосредственно в сообщении, или по хронологии.

  • toplevel — значение по умолчанию. Возвращает все комментарии верхнего уровня в хронологическом порядке, используемом на Facebook. Этот фильтр позволяет отображать комментарии с той же структурой, которая используется на Facebook.
  • stream — комментарии всех уровней в хронологическом порядке (chronological). Этот фильтр можно использовать для инструментов модерации комментариев, поскольку он позволяет просматривать хронологический список всех комментариев.

Поля

Массив объектов комментариев в дополнение к следующим полям, если для параметра summary в запросе задано значение true.

Поле Описание

order

Перечисление { chronological, reverse_chronological }

Порядок возврата комментариев:

  • chronological — сначала выводятся самые старые комментарии;
  • reverse_chronological — сначала выводятся самые новые комментарии.

total_count

32-разрядное целое число

Количество комментариев в этом узле. Обратите внимание, что это значение изменяется в зависимости от используемого параметра filter (при наличии ответов на комментарии):

  • если для параметра filter установлено значение stream, то total_count будет соответствовать количеству всех комментариев (включая ответы) в узле;
  • если для параметра filter установлено значение toplevel, то total_count будет соответствовать количеству комментариев верхнего уровня в узле.

Примечание. Из соображений конфиденциальности или в случае удаления значение total_count может быть больше фактического количества возвращаемых комментариев либо равно ему.

Публикация

Вы можете публиковать комментарии к любому объекту.

Новая версия Страниц

Новый формат Страниц поддерживает конечную точку /comments для следующих объектов:

  • комментарий;
  • публикация на странице;
  • фото;
  • публикация;
  • комментарий к публикации;
  • видео.

Разрешения

  • Маркер доступа к Странице, запрошенный пользователем, который может выполнять действие MODERATE на Странице.
  • Разрешение pages_manage_engagement.

Обратите внимание, что возможность отвечать на комментарий определяется полем can_comment в объекте комментария.

Пример

POST /v21.0/{object-id}/comments HTTP/1.1
Host: graph.facebook.com

message=This+is+a+test+comment
/* PHP SDK v5.0.0 */
/* make the API call */
try {
  // Returns a `Facebook\FacebookResponse` object
  $response = $fb->post(
    '/{object-id}/comments',
    array (
      'message' => 'This is a test comment',
    ),
    '{access-token}'
  );
} catch(Facebook\Exceptions\FacebookResponseException $e) {
  echo 'Graph returned an error: ' . $e->getMessage();
  exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
  echo 'Facebook SDK returned an error: ' . $e->getMessage();
  exit;
}
$graphNode = $response->getGraphNode();
/* handle the result */
/* make the API call */
FB.api(
    "/{object-id}/comments",
    "POST",
    {
        "message": "This is a test comment"
    },
    function (response) {
      if (response && !response.error) {
        /* handle the result */
      }
    }
);
Bundle params = new Bundle();
params.putString("message", "This is a test comment");
/* make the API call */
new GraphRequest(
    AccessToken.getCurrentAccessToken(),
    "/{object-id}/comments",
    params,
    HttpMethod.POST,
    new GraphRequest.Callback() {
        public void onCompleted(GraphResponse response) {
            /* handle the result */
        }
    }
).executeAsync();
NSDictionary *params = @{
  @"message": @"This is a test comment",
};
/* make the API call */
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
                               initWithGraphPath:@"/{object-id}/comments"
                                      parameters:params
                                      HTTPMethod:@"POST"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection,
                                      id result,
                                      NSError *error) {
    // Handle the result
}];

Поля

Имя Описание

attachment_id

Строка

Необязательный ID неопубликованного фото (см. поле no_story в /{user-id}/photos), загруженного на Facebook в качестве комментария. При публикации необходимо задать один из следующих параметров: attachment_id, attachment_share_url, attachment_url, message или source.

attachment_share_url

Строка

URL GIF-файла, который используется в качестве комментария. При публикации необходимо задать один из следующих параметров: attachment_id, attachment_share_url, attachment_url, message или source.

attachment_url

Строка

URL изображения, которое используется в качестве комментария. При публикации необходимо задать один из следующих параметров: attachment_id, attachment_share_url, attachment_url, message или source.

source

multipart/form-data

Фото в кодировке form-data, используемое в качестве комментария. При публикации необходимо задать один из следующих параметров: attachment_id, attachment_share_url, attachment_url, message или source.

message

Строка

Текст комментария. При публикации необходимо задать один из следующих параметров: attachment_id, attachment_share_url, attachment_url, message или source.

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

@[page-id]

Использование этой функции будет пересмотрено.

Возвращаемый тип

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

{
  "id": "{comment-id}"
}

Обновление

Эту границу контекста нельзя использовать для обновления.

Удаление

Эту границу контекста нельзя использовать для удаления.

Чтобы удалить конкретные комментарии, используйте конечную точку /comment-id.