Я пытаюсь получить прямую ссылку для скачивания файла с помощью API Google Диска.Python

Программы на Python
Anonymous
Я пытаюсь получить прямую ссылку для скачивания файла с помощью API Google Диска.

Сообщение Anonymous »

Я пытаюсь получить прямую ссылку для скачивания файла на Google Диске с помощью Google Drive API (v3), но я также пытаюсь сделать это, не делая файл общедоступным.
Вот что я пробовал:

Код: Выделить всё

https://www.googleapis.com/drive/v3/files/**FILE_ID**?alt=media&supportsAllDrives=True&includeItemsFromAllDrives=True&key=**API_KEY**
Теперь это работает, если файл доступен публично. Но если файл не является общедоступным, вы получаете следующее сообщение:

Код: Выделить всё

{'error': {'errors': [{'domain': 'global', 'reason': 'notFound', 'message': 'File not found: 10k0Qogwcz7k0u86m7W2HK-LO7bk8xAF8.', 'locationType': 'parameter', 'location': 'fileId'}], 'code': 404, 'message': 'File not found: 10kfdsfjDHJ38-UHJ34D82.'}}
Погуглив, я нашел сообщение о переполнении стека, в котором говорилось, что мне нужно добавить заголовок запроса с моим токеном доступа, но это не работает, и приложение просто зависает.
Вот полный код:

Код: Выделить всё

### SETTING UP GOOGLE API
scopes = 'https://www.googleapis.com/auth/drive'
store = file.Storage('storage.json')
credentials = store.get()
if not credentials or credentials.invalid:
flow = client.flow_from_clientsecrets('client_secret.json', scopes)
credentials = tools.run_flow(flow, store)
accessToken = credentials.access_token
refreshToken = credentials.refresh_token
drive = build('drive', 'v3', credentials=credentials)

### SENDING REQUEST
req_url = "https://www.googleapis.com/drive/v3/files/"+file_id+"?alt=media&supportsAllDrives=True&includeItemsFromAllDrives=True&key="+GOOGLE_API_KEY
headers={'Authorization': 'Bearer %s' % accessToken}
request_content = json.loads((requests.get(req_url)).content)
print(request_content)
------------------ РЕДАКТИРОВАТЬ: ------------------
Я очень близок к ответу, но не могу понять, почему это не работает.
Итак, ранее я выяснил, что alt=media генерирует ссылку для скачивания файла, но когда файл является частным, это не работает.
Я только что обнаружил, что вы можете добавить &access_token=.... для доступа к личным файлам, поэтому я придумал этот вызов API:

Код: Выделить всё

https://www.googleapis.com/drive/v3/files/**FILE_ID**?supportsAllDrives=true&alt=media&access_token=**ACCESS_TOKEN**&key=**API_KEY**
Когда я перехожу по этому URL-адресу в браузере, я получаю следующее сообщение:

Код: Выделить всё

We're sorry...
... but your computer or network may be sending automated queries. To protect our users, we can't process your request right now.
Меня это сбивает с толку, потому что если я удалю alt=media, я смогу выполнить этот запрос и получить некоторые метаданные о файле.

Вернуться в «Python»