versión API Graph

/{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 las mismas para cada nodo. Los siguientes objetos tienen un perímetro /comments:

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

Lectura

Devuelve un comentario en un objeto.

Ya no se devolverá el campo id del extremo /PAGEPOST-ID/comments para las aplicaciones que usen la función de acceso al contenido público de la página. Para acceder a los identificadores de los comentarios de una publicación de la página, debes poder realizar la tarea MODERATE en la página que se consulta. Este cambio está vigente en la versión 11.0 y posteriores, y se implementará para todas las demás el 7 de septiembre de 2021.

Nueva experiencia para páginas

El extremo /comments de los siguientes objetos es compatible con la nueva experiencia para páginas:

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

Permisos

  • Los mismos permisos necesarios para ver el objeto principal son necesarios para ver los comentarios en ese objeto.

Limitaciones

  • No se devolverán los comentarios ni la información de perfil de otros usuarios al acceder a sus publicaciones, fotos, álbumes, vídeos, Me gusta y reacciones a no ser que dichos usuarios lo autoricen.
  • Los comentarios que se devuelven en una consulta se basan en la filtración predeterminada. Para obtener todos los comentarios que se pueden devolver según tus permisos, establece el parámetro filter en stream o usa el campo order.
  • Una página nueva puede comentar como página en las páginas nuevas o clásicas. En cambio, una página clásica no puede comentar en una página nueva.
  • En el caso de los nodos que se incluyen a continuación, el extremo /comments devuelve datos vacíos si se leen con un identificador de acceso de usuario:
  • Ya no se devolverá el campo id del extremo /PAGEPOST-ID/comments para las aplicaciones que usen la función de acceso al contenido público de la página. Para acceder a los identificadores de los comentarios de una publicación de la página, debes poder realizar la tarea MODERATE en la página que se consulta.
  • En el caso de los objetos con 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 la 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

Resumen de metadatos acerca de los comentarios del objeto. Es importante destacar que estos metadatos incluyen el campo order, que indica cómo se ordenan los comentarios.

filter

Enumeración { toplevel, stream }

Si un usuario puede responder a un comentario, puedes filtrar los comentarios en función de los comentarios de nivel superior, los comentarios que se dejan directamente en la publicación o el orden cronológico de todos los comentarios.

  • toplevel: el valor predeterminado. Devuelve todos los comentarios de nivel superior en orden cronológico, tal y como están ordenados en Facebook. Este filtro resulta útil para mostrar comentarios con la misma estructura con la que se muestran en Facebook.
  • stream: los comentarios de todos los niveles en orden chronological. Este filtro resulta útil para las herramientas de moderación de comentarios, donde resulta útil ver una lista cronológica de todos los comentarios.

Campos

Una matriz de objetos de comentarios, además de los siguientes campos, cuando el valor de summary es true en la solicitud.

Campo Descripción

order

Enumeración { chronological, reverse_chronological }

Orden en que se devolvieron los comentarios.

  • chronological: comentarios ordenados según su antigüedad (los más antiguos primero).
  • reverse_chronological: comentarios ordenados según su antigüedad (los más recientes primero).

total_count

int32

Recuento de comentarios de este nodo. Es importante tener en cuenta que este valor cambia en función del valor de filter que se use (si las respuestas a comentarios están disponibles):

  • Si el valor de filter es stream, el valor de total_count será un recuento de todos los comentarios (incluidas las respuestas) del nodo.
  • Si el valor de filter es toplevel, el valor de total_count será un recuento de todos los comentarios de nivel superior del nodo.

Nota: El valor de total_count puede ser mayor o igual que el número real de comentarios devueltos debido a la eliminación o la privacidad de los comentarios.

Publicación

Publica comentarios nuevos en cualquier objeto.

Nueva experiencia para páginas

El extremo /comments de los siguientes objetos es compatible con la nueva experiencia para páginas:

  • Comentarios
  • PagePosts
  • Foto
  • Publicación
  • PostComment
  • Vídeo

Permisos

  • Un identificador 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 en cuenta que el campo can_comment de los objetos de comentarios individuales indica si es posible responder a dicho 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

Identificador opcional de una foto no publicada (consulta el campo no_story de /{user-id}/photos) subido a Facebook para incluirlo como un comentario de una foto. En el momento de la publicación, se debe proporcionar uno de los siguientes campos: attachment_id, attachment_share_url, attachment_url, message o source.

attachment_share_url

Cadena

URL de un GIF que se incluirá como comentario de GIF animado. En el momento de la publicación, se debe proporcionar uno de los siguientes campos: attachment_id, attachment_share_url, attachment_url, message o source.

attachment_url

Cadena

URL de una imagen que se incluirá como comentario de foto. En el momento de la publicación, se debe proporcionar uno de los siguientes campos: attachment_id, attachment_share_url, attachment_url, message o source.

source

multipart/form-data

Foto, codificada como datos de formulario, que se usará como comentario de foto. En el momento de la publicación, se debe proporcionar uno de los siguientes campos: attachment_id, attachment_share_url, attachment_url, message o source.

message

Cadena

Texto del comentario. En el momento de la publicación, se debe proporcionar uno de los siguientes campos: attachment_id, attachment_share_url, attachment_url, message o source.

Puedes mencionar otras páginas de Facebook en el texto del campo message mediante la sintaxis siguiente:

@[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 en formato JSON con el identificador de comentario recién creado. Además, este extremo admite la operación de lectura después de la escritura y puede devolver inmediatamente cualquier campo que devuelvan las operaciones de lectura.

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

Actualización

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

Eliminación

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

Puedes eliminar comentarios concretos mediante el extremo /comment-id.