NextPageToken выдает неверную ошибку ввода, 400 - Google Directory API ChomeDevices

Мне нужно получить 250 000 хромбуков из рабочей области Google (Gsuite), я использую Admin Directory API для получения данных JSON из Google.

Ответ возвращается кусками по 200 записей, в ответ включено nextPageToken, я использую этот токен следующей страницы для получения следующих 200 и так далее.

Через час использования nextPageToken, прикрепленного к предыдущему запросу, однако Google возвращает ошибку 400,

{error_code: 400, message=>Неверный ввод: CMiJhq7-5ewCEp0BCm737N8GN......},

Примечание. Эта строка «CMiJhq7-5ewCEp0BCm737N8GN......», которую Google называет недействительной, является nextPageToken.

Почему это происходит? Срок действия nextPageToken истекает через 1 час?

Мой фрагмент кода:

query_list = {
      'maxResults' => 200,
      'access_token' => access_token,
      'pageToken' => next_page_token
    }
HTTParty.get(endpoint_url, query: query_list)



Ответы (2)


Маркер nextPage создается при отправке исходного запроса. Этот токен используется для получения следующей партии строк из запроса.

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

Так что да, срок действия токенов следующей страницы действительно истекает, я действительно ожидаю, что срок их действия истечет намного меньше, чем через час. Мне также интересно, не истечет ли срок действия токена следующей страницы после того, как вы использовали его в первый раз.

Если вы хотите снова сделать тот же запрос, я предлагаю вам сделать это и получить новые токены следующей страницы, созданные для вас через час.

person DaImTo    schedule 03.11.2020
comment
Это именно то, что я делаю, каждый раз, когда Google отправляет мне новый nextPageToken, который я использую для запроса следующих 200 фрагментов с разбивкой на страницы. Но через 1 час последний nextPageToken при использовании не возвращает следующие 200, а дает мне ошибку invalid_input, 400. - person Mujtaba; 03.11.2020
comment
вам нужен час, чтобы пройти через ответ? тогда вам нужно ускорить процесс. Какой метод вы вызываете, вы проверили, есть ли способ увеличить количество строк, возвращаемых в ответе. - person DaImTo; 03.11.2020
comment
Попался, я думал, что срок действия nextPageToken не истек, ссылка на ответ, из-за которого я подумал, что срок его действия не истек: link, я изменю свой подход и сначала извлеките все куски, а затем обработайте. Спасибо @daimto - person Mujtaba; 03.11.2020

Мне пришлось изменить свой подход: сначала я получил 200 фрагментов из API Google, выполнил некоторую длительную обработку, а затем сделал записи в свою базу данных (задачи с интенсивным использованием базы данных), а затем запросил следующие 200 фрагментов и так далее. Через час последний nextpagetoken, отправленный Google, стал недействительным.

Итак, теперь я извлекаю 200 фрагментов, сохраняю их в своей базе данных в формате JSON, не выполняя никаких задач, интенсивно использующих базу данных, запрашиваю следующие 200 и так далее. Мне удалось получить 300 000 данных Chromebook JSON из Google примерно за 56 минут до того, как nextPageToken стал недействительным.

Теперь я обрабатываю эти данные JSON, присутствующие в моей базе данных, без накладных расходов на сеть или какой-либо зависимости от API Google.

person Mujtaba    schedule 04.11.2020