Ошибка подключения к Google Drive с помощью Oauth 2 на локальной машине с Python - PullRequest
0 голосов
/ 16 мая 2018

Я пытаюсь подключиться к Google Drive, используя Oauth на моей локальной машине.Сначала я попытался выполнить шаги быстрого старта, описанные здесь https://developers.google.com/drive/v3/web/quickstart/python, но он не подключился.Я получаю приглашение с экраном авторизации и нажимаю кнопку «Разрешить», но затем перенаправляется на localhost: 8080 с сообщением об ошибке, и журнал сообщает:

Ваш браузер открыт для посещения:

https://accounts.google.com/o/oauth2/auth?scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.metadata.readonly&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2F&response_type=code&client_id=xxxxxxxxxxxx-xxxxxxxxxxxxxxxxxx.apps.googleusercontent.com&access_type=offline

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

- noauth_local_webserver

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

from httplib2 import Http
from oauth2client import file, client, tools
from oauth2client.client import flow_from_clientsecrets

store = file.Storage('credentials.json')
flow = flow_from_clientsecrets('client_secret.json',                        
       scope='https://www.googleapis.com/auth/drive.metadata.readonly',                       
       redirect_uri='http://example.com/auth_return')

print flow
creds = tools.run_flow(flow, store)
print 'access_token: {}'.format(creds.access_token)

service = build('drive', 'v3', http=creds.authorize(Http()))

Есть идеи, пожалуйста?

1 Ответ

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

Чтобы пройти аутентификацию в Google, необходимо сначала войти в свою учетную запись Google, а затем подтвердить авторизацию.

Ваш сценарий говорит вам перейти на эту страницу и подтвердить авторизацию.

https://accounts.google.com/o/oauth2/auth?scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive.metadata.readonly&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2F&response_type=code&client_id=xxxxxxxxxxxx-xxxxxxxxxxxxxxxxxx.apps.googleusercontent.com&access_type=offline

Просто откройте его в браузере, еслион не сделал этого для вас.

вы могли бы подумать о быстром запуске python

"""
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']))
...