Depurar solicitudes

Modo de depuración de la API Graph

Si el modo de depuración está activado, la respuesta de la API Graph puede contener campos adicionales que explican posibles problemas con la solicitud.

Para activar el modo de depuración, debes utilizar el parámetro de la cadena de consulta debug. Por ejemplo:

curl -i -X GET \
  "https://graph.facebook.com/{user-id}
    ?fields=friends
    &debug=all
    &access_token={your-access-token}"
GraphRequest request = GraphRequest.newMeRequest(
  accessToken,
  new GraphRequest.GraphJSONObjectCallback() {
    @Override
    public void onCompleted(JSONObject object, GraphResponse response) {
      // Insert your code here
    }
});

Bundle parameters = new Bundle();
parameters.putString("fields", "friends");
parameters.putString("debug", "all");
request.setParameters(parameters);
request.executeAsync();
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
    initWithGraphPath:@"/{user-id}"
           parameters:@{ @"fields": @"friends",@"debug": @"all",}
           HTTPMethod:@"GET"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
    // Insert your code here
}];
FB.api(
  '/{user-id}',
  'GET',
  {"fields":"friends","debug":"all"},
  function(response) {
      // Insert your code here
  }
);
try {
  // Returns a `FacebookFacebookResponse` object
  $response = $fb->get(
    '/{user-id}',
    '{access-token}'
  );
} catch(FacebookExceptionsFacebookResponseException $e) {
  echo 'Graph returned an error: ' . $e->getMessage();
  exit;
} catch(FacebookExceptionsFacebookSDKException $e) {
  echo 'Facebook SDK returned an error: ' . $e->getMessage();
  exit;
}
$graphNode = $response->getGraphNode();

Si no se otorgó el permiso user_friends, se devuelve la respuesta siguiente:

{
  "data": [
  ], 
  "__debug__": {
    "messages": [
      {
        "message": "Field friends is only accessible on User object, if user_friends permission is granted by the user", 
        "type": "warning"
      }, 
      {
        "link": "https://developers.facebook.com/docs/apps/changelog#v2_0", 
        "message": "Only friends who have installed the app are returned in versions greater or equal to v2.0.", 
        "type": "info"
      }
    ]
  }
}

El valor del parámetro debug se puede establecer en “all” o en un nivel de gravedad mínimo solicitado que se corresponda con el campo type del mensaje:

Valor del parámetro de depuración Elementos que se devolverán

all

Todos los mensajes de depuración disponibles.

info

Mensajes de depuración con los tipos info y warning.

warning

Solo los mensajes de depuración con el tipo warning.

Si está disponible, la información de depuración se devuelve como un objeto JSON bajo la clave __debug__ en la matriz messages. Cada elemento de esta matriz es un objeto JSON que contiene los campos siguientes:

Campo Tipo de datos Descripción

message

Cadena

Mensaje.

type

Cadena

Gravedad del mensaje.

link

Cadena

[Opcional] URL que apunta a información relacionada.

El modo de depuración también se puede usar con el explorador de la API Graph.

Determinar la versión que utilizan las solicitudes de la API

Al compilar una aplicación y realizar solicitudes de la API Graph, puede que te resulte útil determinar de qué versión de la API obtienes la respuesta. Por ejemplo, si realizas llamadas sin una versión concreta, es posible que la versión de la API que responda no te resulte conocida.

La API Graph proporciona un encabezado de solicitud con cualquier respuesta denominado facebook-api-version que indica la versión exacta de la API que generó la respuesta. Por ejemplo, una llamada a la API Graph que genera una solicitud con la versión 2.0 produce el siguiente encabezado HTTP:

facebook-api-version:v2.0

Este encabezado facebook-api-version permite determinar si las llamadas a la API se devuelven desde la versión prevista.

Información de depuración para notificar errores

Al notificar un error en la API Graph, se incluyen algunos encabezados de solicitud adicionales que se deben enviar con el informe de errores a fin de facilitar la localización y la reproducción del problema. Dichos encabezados son X-FB-Debug, x-fb-rev y X-FB-Trace-ID.