Я работаю над проектом по извлечению аналитических данных из 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"
}
]
}
Другие подобные вопросы:
- ROWS не возвращается в API Youtube Analytics?
- API YouTube Analytics не возвращает ROWS для запроса определенного видео
- API YouTube Analytics не возвращает строк для демографического запроса, но возвращает просмотры
- Канал API YouTube Analytics: ответ не имеет параметра строк< /а>
Я проверил некоторые из зацепок в этих вопросах.
- Я получаю данные для запроса... только не через пакет и не через проводник API.
- Точно так же, как №1. Если я изменяю или расширяю диапазоны дат, API Explorer по-прежнему не возвращает строк, в то время как запрос Postman показывает строки.
- См. расследования № 4
- Я могу получить отчет в интерфейсе YouTube — от имени того же пользователя, который используется для API Explorer и моей программы — и просмотреть данные.
Снимок экрана интерфейса YouTube
Эти данные соответствуют тому, что я получаю из запроса Почтальона. Это означает, что одни и те же данные должны быть доступны через API Explorer и пакетные запросы, однако они явно различаются.
Что-то упускаю? Разве я не должен получать строки в ответе от API Explorer? Точно так же не должен ли пакетный ответ содержать то же содержимое, что и прямой запрос GET
, который я вижу через Postman?
Любое понимание или предложения для дальнейшего изучения приветствуются. Если вы зашли так далеко, спасибо за ваше время.
Чердак
Postman-Token
, да, заголовки такие же. Конечно, использование конечной точки пакета помещает эти заголовки как часть пакетаPOST
multipart... но они совпадают с Postman при просмотре раздела multipart. Было бы неплохо увидеть, из чего состоят заголовки API Explorer для сравнения, но предоставляется только URI. - person inimicus   schedule 13.06.2016GET
. В области была жестко закодированная дата, что привело к несовпадению дат и, следовательно, к отсутствию доступных данных. Теперь моя программа возвращает данные, как и ожидалось, и результаты совпадают с Postman. Тем не менее, по-прежнему остается проблема, связанная с тем, что API Explorer не возвращает строки, в то время как Postman делает это по тому же запросу копирования/вставкиGET
. Интересно. - person inimicus   schedule 14.06.2016