API Graph versión

/{object-id}/comments

En esta referencia, se describe el perímetro /comments, común a varios nodos de la API Graph. La estructura y las operaciones son iguales en cada nodo. Los siguientes objetos tienen un perímetro /comments:

Los objetos de comentarios pueden tener un perímetro /comments denominado respuestas a comentarios. Para estos, la estructura es la misma, pero se debe prestar atención a los modificadores para dichos perímetros.

Lectura

Devuelve un comentario sobre un objeto.

Se dejará de devolver el campo id del punto de conexión /PAGEPOST-ID/comments para las apps que usan la función de acceso al contenido público de la página. Para obtener los identificadores de comentarios de una publicación de la página, debes poder realizar la tarea "MODERATE" en la página sobre la que se realiza la consulta. Este cambio se aplica a la versión 11.0 (y posteriores) y se implementará en todas las versiones el 7 de septiembre de 2021.

Nueva experiencia para páginas

Se admiten los siguientes puntos de conexión de /comments de objetos en la Nueva experiencia para páginas:

  • Álbum
  • Comentario
  • Enlace
  • Página
  • PagePost
  • Foto
  • Publicación
  • PostComment

Permisos

  • Para ver los comentarios sobre ese objeto, se requieren los mismos permisos que los necesarios para ver el objeto principal.

Limitaciones

  • No se devolverá la información del perfil del usuario ni los comentarios cuando se acceda a publicaciones, fotos, álbumes, videos, me gusta y reacciones del usuario, a menos que este lo haya autorizado.
  • Los comentarios devueltos en una consulta se basan en el filtrado predeterminado. Para obtener todos los comentarios que se pueden devolver según tus permisos, configura el parámetro filter en stream o usa el campo order.
  • Una nueva página puede comentar como página en páginas nuevas o en páginas clásicas. Sin embargo, una página clásica no puede comentar en una página nueva.
  • En los siguientes nodos, el punto de conexión /comments devuelve datos vacíos si lo lees con un token de acceso de usuario:
  • Se dejará de devolver el campo id del punto de conexión /PAGEPOST-ID/comments para las apps que usan la función de acceso al contenido público de la página. Para acceder a los identificadores de comentarios de una publicación de la página, debes poder realizar la tarea "MODERATE" en la página sobre la que se realiza la consulta.
  • En el caso de los objetos que tienen decenas de miles de comentarios, es posible que encuentres límites al realizar la paginación. Obtén más información sobre la paginación en nuestra guía de uso de la API Graph.

Ejemplo

Explorador de la API Graph
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
}];

Parámetros

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
}];
Parámetro Descripción

summary

booleano

Un resumen de metadatos acerca de los comentarios sobre el objeto. Es importante saber que estos metadatos incluyen order, que indica cómo se ordenan los comentarios.

filter

enumeración { toplevel, stream }

Si una persona puede responder un comentario, puedes filtrarlos en función de los comentarios de nivel superior, de los que se realicen directamente en la publicación o del orden cronológico de todos los comentarios.

  • toplevel: este es el ajuste predeterminado. Devuelve los comentarios principales en orden cronológico, como se ordenan en Facebook. Este filtro es útil para visualizar los comentarios con la misma estructura con la que aparecen en Facebook.
  • stream: los comentarios de todos los niveles en orden chronological. Este filtro sirve para herramientas de moderación de comentarios, en las que es útil ver una lista cronológica de todos los comentarios.

Campos

Una matriz de objetos de comentario, además de los siguientes campos cuando un summary es true en la solicitud.

Campo Descripción

order

enumeración { chronological, reverse_chronological }

Orden en el que se devolvieron los comentarios.

  • chronological: los comentarios más antiguos se ordenan en primer lugar.
  • reverse_chronological: los comentarios más nuevos se ordenan en primer lugar.

total_count

int32

El número de comentarios sobre este nodo. Es importante tener en cuenta que este valor cambia en función del filter que se utilice (cuando están disponibles las respuestas a comentarios):

  • si el filter es stream, entonces el total_count será el número total de comentarios (incluidas las respuestas) sobre el nodo.
  • si el filter es toplevel, entonces el total_count será el número total de comentarios principales sobre el nodo.

Nota: El total_count puede ser mayor o igual que el número real de comentarios devueltos por razones relacionadas con la privacidad o la eliminación de los comentarios.

Publicación

Publica nuevos comentarios en cualquier objeto.

Nueva experiencia para páginas

Se admiten los siguientes puntos de conexión /comments de objetos en la Nueva experiencia para páginas:

  • Comentarios
  • PagePosts
  • Foto
  • Publicación
  • PostComment
  • Video

Permisos

  • Un token de acceso a la página solicitado por una persona que pueda realizar la tarea MODERATE en la página.
  • El permiso pages_manage_engagement.

Ten presente que el campo can_comment en cada objeto de comentario individual indica si es posible responder a ese comentario.

Ejemplo

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
}];

Campos

Nombre Descripción

attachment_id

cadena

Un identificador opcional de una foto no publicada (consultar el campo no_story en /{user-id}/photos) subido a Facebook para incluir como comentario de una foto. Al publicar, se debe proporcionar uno de los campos attachment_id, attachment_share_url, attachment_url, message o source.

attachment_share_url

cadena

La URL de un GIF que se incluirá como comentario de un GIF animado. Al realizar la publicación, se debe proporcionar alguno de estos campos: attachment_id, attachment_share_url, attachment_url, message o source.

attachment_url

cadena

La URL de una imagen que se incluirá como comentario de una foto. Al realizar la publicación, se debe proporcionar alguno de estos campos: attachment_id, attachment_share_url, attachment_url, message o source.

source

multipart/form-data

Una foto, codificada como datos de formulario, que se usará como comentario de una foto. Al realizar la publicación, se debe proporcionar alguno de estos campos: attachment_id, attachment_share_url, attachment_url, message o source.

message

cadena

El texto del comentario. Al realizar la publicación, se debe proporcionar alguno de estos campos: attachment_id, attachment_share_url, attachment_url, message o source.

Menciona otras páginas de Facebook en el texto de tu message mediante la siguiente sintaxis:

@[page-id]

El uso de esta función está sujeto a revisión.

Tipo de devolución

Si la operación se realiza correctamente, recibirás una respuesta JSON con el identificador de comentario creado recientemente. Asimismo, este punto de conexión admite la lectura después de escritura y puede devolver de inmediato los campos devueltos por las operaciones de lectura.

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

Actualización

No puedes realizar la actualización si usas este perímetro.

Eliminación

No puedes realizar la eliminación con este perímetro.

Para eliminar comentarios individuales, usa el punto de conexión /comment-id.