Почему запрос на сбор идентификаторов видео не удался, даже если мы используем `nextPageToken`, написанный на предыдущем результате API?

#youtube-api #youtube-data-api

#youtube-api #youtube-data-api

Вопрос:

Я создаю функцию мониторинга показателей YouTube. Но я столкнулся с одним запутанным моментом при использовании API данных YouTube.

Я хочу получить все идентификаторы видео одного канала YouTube. Я использую Lambda для этого процесса.
Перед вызовом API я каждый раз обновляю токен доступа в лямбде.
Чтобы получить идентификаторы видео, я использовал search#list следующие параметры:

  • part : "id"
  • forMine : true
  • type : "video"
  • maxResults : 50

Затем мы можем получить следующий результат:

 {
  "kind": "youtube#searchListResponse",
  "etag": "7d3zMRNK3SwAAdU_zX5Yo9oMezw",
  "nextPageToken": "SampleNextPageTokenParamXXX",
  "pageInfo": {
    "totalResults": 54,
    "resultsPerPage": 50
  },
  "items": [
    {
      "kind": "youtube#searchResult",
      "etag": "etag1",
      "id": {
        "kind": "youtube#video",
        "videoId": "sampleVideoId1"
      }
    },
    {
      "kind": "youtube#searchResult",
      "etag": "etag2",
      "id": {
        "kind": "youtube#video",
        "videoId": "sampleVideoId2"
      }
    },
    ...
}
 

Затем я попытался вызвать API со следующим.

  • part : "id"
  • forMine : true
  • type : "video"
  • maxResults : 50
  • pageToken : "SampleNextPageTokenParamXXX" (добавлено)

Затем у нас было две ситуации.

  1. [Пример успеха] Может получить результат
  2. [Неудачный случай] Получен следующий результат:
 {
    "error": {
        "code": 400,
        "message": "Therequestspecifiesaninvalidpagetoken.",
        "errors": [
            {
                "message": "The request specifies an invalid page token.",
                "domain": "youtube.parameter",
                "reason": "invalidPageToken",
                "location": "pageToken",
                "locationType": "parameter"
            }
        ]
    }
}
 

Я думаю, что эта проблема возникла из-за решения для управления токеном доступа, и это произошло, когда токен доступа был деактивирован другими процессами, работающими параллельно, или процессом автоматической повторной попытки Lambda.
Но если у вас есть какое-либо решение, отличное от точки зрения токенов, не могли бы вы рассказать нам? С наилучшими пожеланиями.

Ответ №1:

Похоже, возникла временная (известная в Google) проблема, из-за которой nextPageToken он не работал должным образом.

Сотрудники Google сообщили, что это исправлено: ошибка ‘400 invalidPageToken’, возвращенная для действительного токена следующей страницы

Комментарии:

1. Большое вам спасибо, я понимаю, что эта проблема уже исправлена! В следующий раз я также попытаюсь проверить IssueTracker на предмет изучения некоторых проблем, связанных с API данных YouTube.