Как загрузить файл на Google Drive, используя Drive API, используя Python? - PullRequest
0 голосов
/ 31 мая 2018

Я хочу загрузить файл на Google Drive, используя его API, я использую код

def newer():
    url= 'https://USERNAME:PASSWORD@www.googleapis.com/upload/drive/v3/files?uploadType=media'
    data='''{{
      "name":"testing.txt",
    }}'''
    response = requests.post(url, data=data)
    print response.text

Однако я получаю сообщение об ошибке ответа, как показано ниже.

{"error": {"errors": [{"domain": "global", "reason": "authError", "message": "Базовая аутентификация HTTP не поддерживается для этого API", "headerType": "header"," location ":" Authorization "}]," code ": 401," message ":" Базовая аутентификация HTTP не поддерживается для этого API "}}

Есть ли другой способвыполняю свою работу, используя python.

Нужно ли входить в облако Google, чтобы получить доступ к API для токена аутентификации или учетных данных

Ответы [ 2 ]

0 голосов
/ 04 июня 2018

Наконец-то я понял, как загрузить файл на диск Google с помощью API.

Сначала вам нужно установить библиотеку Python, которая предоставляет методы для использования API диска.установка библиотеки: pip install google-api-python-client, а затем код, как показано ниже.

from __future__ import print_function
from apiclient.discovery import build
from httplib2 import Http
from oauth2client import file, client, tools
from apiclient.http import MediaFileUpload,MediaIoBaseDownload
import io

# Setup the Drive v3 API
SCOPES = 'https://www.googleapis.com/auth/drive.file'
store = file.Storage('credentials.json')
creds = store.get()
if not creds or creds.invalid:
    flow = client.flow_from_clientsecrets('client_secret.json', SCOPES)
    creds = tools.run_flow(flow, store)
drive_service = build('drive', 'v3', http=creds.authorize(Http()))

приведенный выше фрагмент кода предназначен для создания объекта / переменной, которые позволяют вам войти внутрь накопителя с правильными учетными данными.здесь drive_service это работает.

Код загрузки файла приведен ниже.

def uploadFile():
    file_metadata = {
    'name': 'fileName_to_be_in_drive.txt',
    'mimeType': '*/*'
    }
    media = MediaFileUpload('Filename_of_your_local_file.txt',
                            mimetype='*/*',
                            resumable=True)
    file = drive_service.files().create(body=file_metadata, media_body=media, fields='id').execute()
    print ('File ID: ' + file.get('id'))

Идентификатор файла важен, потому что если вы хотите загрузить файл с диска, вам нужен файлID.

0 голосов
/ 31 мая 2018

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

ИМЯ ПОЛЬЗОВАТЕЛЯ: ПАРОЛЬ

Называется обычная аутентификация и использует логин и пароль, которые Google отключил для этого в 2015 году.

Чтобы получить доступ к личным данным пользователей, вам нужно использовать Oauth2.

Я предлагаю начать с Python quickstart

"""
Shows basic usage of the Drive v3 API.

Creates a Drive v3 API service and prints the names and ids of the last 10 files
the user has access to.
"""
from __future__ import print_function
from apiclient.discovery import build
from httplib2 import Http
from oauth2client import file, client, tools

# Setup the Drive v3 API
SCOPES = 'https://www.googleapis.com/auth/drive.metadata.readonly'
store = file.Storage('credentials.json')
creds = store.get()
if not creds or creds.invalid:
    flow = client.flow_from_clientsecrets('client_secret.json', SCOPES)
    creds = tools.run_flow(flow, store)
service = build('drive', 'v3', http=creds.authorize(Http()))

# Call the Drive v3 API
results = service.files().list(
    pageSize=10, fields="nextPageToken, files(id, name)").execute()
items = results.get('files', [])
if not items:
    print('No files found.')
else:
    print('Files:')
    for item in items:
        print('{0} ({1})'.format(item['name'], item['id']))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...