Google API Explorer не возвращает строк, Postman делает с тем же запросом

Я работаю над проектом по извлечению аналитических данных из API YouTube Analytics (v1, v1beta1 дает те же результаты). Я начал получать не возвращаемые строки в пакетном вызове и, естественно, заподозрил ошибки на своей стороне.

Я воссоздал один из запросов из моей программы в Google API Explorer, чтобы увидеть, где я мог ошибиться. И тут все стало сложно.

Примечание. Я использую OAuth и запускаю свою программу и проводник API с аутентификацией OAuth одного и того же пользователя во всех местах. Я опустил детали Authorization Bearer [token] из этого поста по очевидным причинам.

Запрос Google API Explorer:

GET https://www.googleapis.com/youtube/analytics/v1/reports?ids=channel%3D%3DMINE&start-date=2016-05-01&end-date=2016-05-31&metrics=views%2CestimatedMinutesWatched&dimensions=insightTrafficSourceType&filters=video%3D%3DEeEHdFmKrGo%3Bcountry%3D%3DUS&fields=rows&key={YOUR_API_KEY}

Результаты Google API Explorer:

200 HTTP/2.0 200

- Show headers -

{
}

Запрос почтальона:

GET https://www.googleapis.com/youtube/analytics/v1/reports?ids=channel%3D%3DMINE&start-date=2016-05-01&end-date=2016-05-31&metrics=views%2CestimatedMinutesWatched&dimensions=insightTrafficSourceType&filters=video%3D%3DEeEHdFmKrGo%3Bcountry%3D%3DUS&fields=rows

Результаты почтальона:

{
  "rows": [
    [
      "YT_PLAYLIST_PAGE",
      83,
      153
    ],
    [
      "YT_CHANNEL",
      21,
      38
    ],
    [
      "PLAYLIST",
      103,
      193
    ],
    [
      "SUBSCRIBER",
      41,
      63
    ],
    [
      "NOTIFICATION",
      16,
      5
    ],
    [
      "ADVERTISING",
      1954,
      2973
    ],
    [
      "RELATED_VIDEO",
      179,
      294
    ],
    [
      "YT_OTHER_PAGE",
      16,
      20
    ],
    [
      "EXT_URL",
      98,
      189
    ],
    [
      "NO_LINK_OTHER",
      603,
      23
    ],
    [
      "YT_SEARCH",
      80,
      130
    ]
  ]
}

Итак, данные доступны. Почему API Explorer не показывает это? API Explorer соответствует поведению моей программы: строки не возвращаются.

Да, если я пропущу значение fields, это даст мне заголовки столбцов:

200 HTTP/2.0 200

- Show headers -

{
 "kind": "youtubeAnalytics#resultTable",
 "columnHeaders": [
  {
   "name": "insightTrafficSourceType",
   "columnType": "DIMENSION",
   "dataType": "STRING"
  },
  {
   "name": "views",
   "columnType": "METRIC",
   "dataType": "INTEGER"
  },
  {
   "name": "estimatedMinutesWatched",
   "columnType": "METRIC",
   "dataType": "INTEGER"
  }
 ]
}

Другие подобные вопросы:

  1. ROWS не возвращается в API Youtube Analytics?
  2. API YouTube Analytics не возвращает ROWS для запроса определенного видео
  3. API YouTube Analytics не возвращает строк для демографического запроса, но возвращает просмотры
  4. Канал API YouTube Analytics: ответ не имеет параметра строк< /а>

Я проверил некоторые из зацепок в этих вопросах.

  1. Я получаю данные для запроса... только не через пакет и не через проводник API.
  2. Точно так же, как №1. Если я изменяю или расширяю диапазоны дат, API Explorer по-прежнему не возвращает строк, в то время как запрос Postman показывает строки.
  3. См. расследования № 4
  4. Я могу получить отчет в интерфейсе YouTube — от имени того же пользователя, который используется для API Explorer и моей программы — и просмотреть данные.

Снимок экрана интерфейса YouTube

Эти данные соответствуют тому, что я получаю из запроса Почтальона. Это означает, что одни и те же данные должны быть доступны через API Explorer и пакетные запросы, однако они явно различаются.

Что-то упускаю? Разве я не должен получать строки в ответе от API Explorer? Точно так же не должен ли пакетный ответ содержать то же содержимое, что и прямой запрос GET, который я вижу через Postman?

Любое понимание или предложения для дальнейшего изучения приветствуются. Если вы зашли так далеко, спасибо за ваше время.

Чердак


person inimicus    schedule 13.06.2016    source источник
comment
У почтальона есть кнопка для просмотра необработанного запроса. Вы пытались сравнить заголовки, отправленные Postman, с теми, которые вы отправляете в своем запросе?   -  person W.K.S    schedule 13.06.2016
comment
Если не считать добавления Postman-Token, да, заголовки такие же. Конечно, использование конечной точки пакета помещает эти заголовки как часть пакета POST multipart... но они совпадают с Postman при просмотре раздела multipart. Было бы неплохо увидеть, из чего состоят заголовки API Explorer для сравнения, но предоставляется только URI.   -  person inimicus    schedule 13.06.2016
comment
Я нашел ошибку в своей программе: я проглядел значения начальной и конечной дат в запросах GET. В области была жестко закодированная дата, что привело к несовпадению дат и, следовательно, к отсутствию доступных данных. Теперь моя программа возвращает данные, как и ожидалось, и результаты совпадают с Postman. Тем не менее, по-прежнему остается проблема, связанная с тем, что API Explorer не возвращает строки, в то время как Postman делает это по тому же запросу копирования/вставки GET. Интересно.   -  person inimicus    schedule 14.06.2016