Я пробовал несколько способов загрузки файлов с диска Google через oauth и API, однако я не могу загрузить файлы. Я считаю, что я правильно аутентифицирован. После запуска моего кода, похоже, что было успешное скачивание файла (без ошибок), но файлы не были загружены.Файлы загрузки API для Google Диска - python - файлы не загружены
Это код, который я пытался до сих пор:
def download_file(file_id, mimeType):
if "google-apps" in mimeType:
return
request = drive_service.files().get(fileId=file_id)
fh = io.BytesIO()
downloader = MediaIoBaseDownload(fh, request)
done = False
while done is False:
status, done = downloader.next_chunk()
print "Download %d%%." % int(status.progress() * 100)
Однако это приводит к "Скачать 100%." печатается на консоль, но файл не загружается.
Я также попытались:
def download2(download_url):
resp, content = drive_service._http.request(download_url)
if resp.status == 200:
print 'Status: %s' % resp
return content
else:
print 'An error occurred: %s' % resp
return None
Это также не производит загруженный файл, но он дает мне 200 сообщений.
Оба эти устройства выглядят так, как будто они правильно вступают в контакт с API. Есть ли еще один шаг, который я должен сделать, чтобы фактически получить файлы на моем компьютере?
Edit:
это остаток моего кода:
import json
import webbrowser
import httplib2
import io
from apiclient.http import MediaIoBaseDownload
from apiclient import discovery
from oauth2client import client
if __name__ == '__main__':
flow = client.flow_from_clientsecrets(
'client_secrets.json',
scope='https://www.googleapis.com/auth/drive.readonly',
redirect_uri='urn:ietf:wg:oauth:2.0:oob')
auth_uri = flow.step1_get_authorize_url()
webbrowser.open(auth_uri)
auth_code = raw_input('Enter the auth code: ')
credentials = flow.step2_exchange(auth_code)
http_auth = credentials.authorize(httplib2.Http())
drive_service = discovery.build('drive', 'v3', http_auth) #also tried v2
files = drive_service.files().list().execute()
for f in files['files']:
#call one of the two download methods with the proper arguments
является кодом аутентификации идентификатор файла в драйвере? – mp252
Нет. Что происходит, так это то, что auth_uri будет сгенерированным URL-адресом, который вам нужно будет отправить владельцу учетной записи. Когда они получат доступ к этой ссылке, они должны будут одобрить вас, тогда вам будет предоставлен код, который они должны будут отдать вам. Затем вы должны ввести этот код. Помните, что код действителен только один раз и в течение ограниченного времени (возможно, 15 минут). – user1253952