Запросы на отладку

Режим отладки API Graph

В режиме отладки ответы API Graph могут включать в себя дополнительные поля с описанием возможных проблем с запросом.

Чтобы включить режим отладки, используйте в строке запроса параметр debug. Пример:

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();

Если разрешение user_friends не предоставлено, ответ будет таким:

{
  "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"
      }
    ]
  }
}

Параметру debug можно присвоить значение all (все) или минимальную степень серьезности в соответствии с типом (type) сообщения.

Значение параметра debug Возвращаемые сообщения

all

Все доступные отладочные сообщения.

info

Отладочные сообщения типов info (информация) и warning (предупреждение).

warning

Только отладочные сообщения типа warning (предупреждение).

Отладочная информация возвращается в виде объекта JSON в ключе __debug__ массива messages. Каждый элемент этого массива представляет собой объект JSON со следующими полями:

Поле Тип данных Описание

message

Строка

Сообщение.

type

Строка

Степень серьезности сообщения.

link

Строка

(Необязательно) URL, по которому можно получить дополнительную информацию.

Режим отладки можно использовать и с Graph API Explorer.

Определение версии API, используемой в запросах

Если ваше приложение выполняет запросы к API Graph, бывает полезно знать, какая именно версия API возвращает ответы. Например, вы можете не знать версию API, если не указываете ее в вызовах.

API Graph добавляет в каждый ответ заголовок запроса facebook-api-version. В нем указывается, какая именно версия API вернула ответ. Например, при вызове API Graph версии 2.0 будет получен такой заголовок HTTP:

facebook-api-version:v2.0

По заголовку facebook-api-version можно определить, получаете ли вы ответы от нужной версии API.

Информация для отладки при отправке сообщений об ошибках

Когда вы сообщаете об ошибке в API Graph, в отчет добавляется ряд дополнительных заголовков. Они помогают нам выявить и воспроизвести проблему. Это заголовки X-FB-Debug, x-fb-rev и X-FB-Trace-ID.