Следуя приведенному здесь примеру ...
https://developers.google.com/admin-sdk/directory/v1/guides/manage-mobile-devices
Я пытался захватывать устройства Chromeos из OU в каталоге только для бесконечного циклического перебора первых 100 устройств, зная, чтоУ меня есть 350+ устройств в этом подразделении.Все, что я могу вытащить, это первые 100 устройств, и они зацикливаются навсегда.
Я убедился, что «токен следующей страницы» всегда различен для каждого вызова excute и никогда не бывает «пустым» или «нет»."или" null "и т. д.
import pickle
import os.path
import json
from googleapiclient.discovery import build
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request
# If modifying these scopes, delete the file token.pickle.
SCOPES = ['https://www.googleapis.com/auth/admin.directory.device.chromeos.readonly']
def main():
## assume proper credentials at this poin in the aCreds variable
aService = build('admin', 'directory_v1', credentials=aCreds)
aRequest = aService.chromeosdevices().list(customerId='my_customer', orderBy='serialNumber', projection='FULL', pageToken=None, maxResults=500, sortOrder=None, query=None, fields='nextPageToken,chromeosdevices(macAddress, serialNumber, status, orgUnitPath)', orgUnitPath='/1/1030/Devices')
aPageToken = "init"
while aPageToken :
aResults = aRequest.execute()
aRequest.pageToken = aResults['nextPageToken']
aPageToken = aResults['nextPageToken']
if aResults:
aString = str(aResults['chromeosdevices']).replace("'", "\"")
aDevices = json.loads(aString)
for aRow in aDevices :
print(aRow["serialNumber"],aRow["macAddress"],aRow["orgUnitPath"])
aCount = aCount+1
if __name__ == '__main__':
main()
Таким образом, он будет просто многократно распечатывать первые 100 устройств в качестве примера ниже
888LPN2 34415dee00e8 /1/1030/Devices.
Я ожидаю, что после печати 350 устройствПрограмма будет завершена, но она будет продолжаться вечно.