Версия API Graph

Комментарий /{comment-id}

Комментарии (comment) можно оставлять к контенту разного типа на Facebook. У большинства узлов API Graph есть граница контекста /comments, содержащая список всех комментариев к объекту. Узел /{comment-id} возвращает один комментарий (comment).

Чтение

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

Этот API поддерживается для новой версии Страниц.

Разрешения

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

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

  • Комментарии и ответы Страницы: если ответы должны содержать информацию о пользователе, необходимо использовать маркер доступа к Странице.

Прежний формат ID комментария к публикации Страницы ({page-id}_{post_id}_{comment-id}) упразднен. Используйте вместо него формат {pagepost-id}_{comment-id}.

Graph API Explorer
GET /v21.0/{comment-id} 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(
    '/{comment-id}',
    '{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(
    "/{comment-id}",
    function (response) {
      if (response && !response.error) {
        /* handle the result */
      }
    }
);
/* make the API call */
new GraphRequest(
    AccessToken.getCurrentAccessToken(),
    "/{comment-id}",
    null,
    HttpMethod.GET,
    new GraphRequest.Callback() {
        public void onCompleted(GraphResponse response) {
            /* handle the result */
        }
    }
).executeAsync();
/* make the API call */
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
                               initWithGraphPath:@"/{comment-id}"
                                      parameters:params
                                      HTTPMethod:@"GET"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection,
                                      id result,
                                      NSError *error) {
    // Handle the result
}];

Поля

Имя свойства Описание Тип

id

ID комментария.

string

attachment

Ссылка, видео, стикер или фото, вложенные в комментарий.

StoryAttachment

can_comment

Указывает, может ли читатель ответить на этот комментарий.

bool

can_remove

Указывает, может ли читатель удалить этот комментарий.

bool

can_hide

Указывает, может ли читатель скрыть этот комментарий. Видно только администратору страницы.

boolean

can_like

Указывает, может ли читатель поставить этому комментарию отметку "Нравится".

boolean

can_reply_privately

Указывает, может ли читатель Страницы ответить на комментарий личным сообщением.

boolean

comment_count

Количество ответов на комментарий.

int32

created_time

Время публикации комментария.

datetime

from

Автор комментария.

User

like_count

Количество отметок "Нравится", поставленных комментарию.

int32

message

Текст комментария.

string

message_tags

Массив профилей, отмеченных в тексте комментария (message).

object[]

id

ID отмеченного профиля.

string

name

Текст тега.

string

type

Тип отмеченного профиля.

enum{user, page, group}

offset

Положение первого символа текста тега в тексте message, в кодовых точках Юникода.

integer

length

Количество кодовых точек Юникода, из которых состоит тег (с учетом сдвига).

integer

object

Тип родительского объекта (только для фото и видео, в том числе в динамических публикациях; для объектов других типов это поле остается пустым).

Object

parent

Родительский комментарий (только для ответов на комментарии).

Comment

permalink_url

URL постоянной ссылки комментария.

Если у вызывающего приложения имеется только функция доступа к общедоступному контенту Страниц, не будет возвращаться в запросах версии 20.0 и выше. С 19 августа 2024 г. это изменение начинает действовать для всех запросов версий.

string

private_reply_conversation

Вывод переписки между Страницей и автором комментария, отправленного в виде личного сообщения (только для читателей Страницы).

Conversation

user_likes

Указывает, поставил ли читатель комментарию отметку "Нравится".

bool

Публикация

Для публикации комментариев можно использовать границу контекста /comments, если она есть в узле.

Удаление

Для удаления комментариев используйте следующую конечную точку:

DELETE /v21.0/{comment-id} HTTP/1.1
Host: graph.facebook.com
/* PHP SDK v5.0.0 */
/* make the API call */
try {
  // Returns a `Facebook\FacebookResponse` object
  $response = $fb->delete(
    '/{comment-id}',
    array (),
    '{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(
    "/{comment-id}",
    "DELETE",
    function (response) {
      if (response && !response.error) {
        /* handle the result */
      }
    }
);
/* make the API call */
new GraphRequest(
    AccessToken.getCurrentAccessToken(),
    "/{comment-id}",
    null,
    HttpMethod.DELETE,
    new GraphRequest.Callback() {
        public void onCompleted(GraphResponse response) {
            /* handle the result */
        }
    }
).executeAsync();
/* make the API call */
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
                               initWithGraphPath:@"/{comment-id}"
                                      parameters:params
                                      HTTPMethod:@"DELETE"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection,
                                      id result,
                                      NSError *error) {
    // Handle the result
}];

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

Этот API поддерживается для новой версии Страниц.

Требования

Для удаления комментария Страницы требуются:

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

Для удаления комментария пользователя или другой Страницы требуются:

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

Ограничения

Отзывы не считаются публикациями Страницы, поэтому Страница не может удалять комментарии к ним.

Ответ

В случае успеха:

{
  "success": true
}

В противном случае возвращается соответствующее сообщение об ошибке.

Обновление

Для редактирования комментариев используйте следующую конечную точку:

POST /v21.0/{comment-id} 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(
    '/{comment-id}',
    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(
    "/{comment-id}",
    "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(),
    "/{comment-id}",
    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:@"/{comment-id}"
                                      parameters:params
                                      HTTPMethod:@"POST"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection,
                                      id result,
                                      NSError *error) {
    // Handle the result
}];

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

Этот API поддерживается для новой версии Страниц.

Разрешения

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

Как скрыть комментарий

Вы можете скрыть практически любой комментарий к публикации, кроме следующих:

  • комментарии, опубликованные от имени Страницы;
  • комментарии, опубликованные от имени администраторов Страницы;
  • комментарии к публикации другого пользователя, опубликованные от имени Страницы (публикация принадлежит пользователю);
  • комментарии, оставленные пользователем к публикации другого пользователя на Странице (публикация принадлежит пользователю);
  • комментарии, сделанные создателем события (публикация принадлежит создателю события);
  • комментарии, сделанные группой Facebook (публикация принадлежит группе);
  • комментарии, сделанные кем угодно к отзыву.

Поля

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

Обязательно укажите сообщение или вложение. В качестве вложения могут выступать url, attachment_id или attachment_share_url. Поля id и url можно указывать одновременно. С полем attachment_share_url нельзя указывать никакие другие поля.

При обновлении комментария следует указать все значения исходного контента, иначе они будут утеряны. Например, если вы забудете добавить в обновленный комментарий изображение, которое автор вложил в него с помощью attachment_url, это изображение пропадет.

Обновлять можно поля, перечисленные в статье об /object/comments (раздел "Публикация"), а именно: attachment_url, attachment_id, message и source. Дополнительные сведения об этих полях см. в статье по ссылке.

Также поддерживается обновление описанного здесь поля is_hidden.

Имя Описание Тип

is_hidden

Указывает, скрыт ли комментарий. Если да, то автор, администратор Страницы и отмеченные в комментарии люди все равно будут его видеть.

boolean

Ответ

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

{
  "success": true
}

В случае неудачи возвращается соответствующее сообщение об ошибке.

Границы контекста

Имя свойства Описание Тип
/comments

Ответы на комментарий.

Edge<Comment>
/likes

Люди, поставившие этому комментарию отметку "Нравится".

Edge<Profile>
/reactions

Люди, отреагировавшие на публикацию.

Edge<Reaction>
/private_replies

Позволяет ответить на комментарий личным сообщением (только для читателей Страницы).

Edge<Message>