Google API: Почему он не может найти мой файл? - PullRequest
0 голосов
/ 30 апреля 2018

Поэтому я пытаюсь использовать Google Drive API, но продолжаю сталкиваться с ошибкой (Невозможно получить доступ к credentials.json: нет такого файла или каталога). Я посмотрел, что сделал кто-то другой, и они решили это, используя абсолютный путь к файлу. Я попробовал это сделать:

if not creds or creds.invalid:
    flow = client.flow_from_clientsecrets('client_secret.json', SCOPES)
    creds = tools.run_flow(flow, store)    

В

if not creds or creds.invalid:
    flow = client.flow_from_clientsecrets(r'C:\Users\FIEND\Documents\Google Sheets Script\client_secret.json', SCOPES)
    creds = tools.run_flow(flow, store)

Оба они получили эту ошибку:

C:\Users\FIEND\AnacondaTests\lib\site-packages\oauth2client\_helpers.py:255: 
UserWarning: Cannot access credentials.json: No such file or directory
warnings.warn(_MISSING_FILE_MESSAGE.format(filename))
usage: ipykernel_launcher.py [--auth_host_name AUTH_HOST_NAME]
                         [--noauth_local_webserver]
                         [--auth_host_port [AUTH_HOST_PORT [AUTH_HOST_PORT 
...]]]
                         [--logging_level 
{DEBUG,INFO,WARNING,ERROR,CRITICAL}]
ipykernel_launcher.py: error: unrecognized arguments: -f 
C:\Users\FIEND\AppData\Roaming\jupyter\runtime\kernel-aa1a9ef5-446a-46d0- 
b6fb-032bd6d673e7.json
An exception has occurred, use %tb to see the full traceback.

SystemExit: 2


C:\Users\FIEND\AnacondaTests\lib\site- 
packages\IPython\core\interactiveshell.py:2918: UserWarning: To exit: use 
'exit', 'quit', or Ctrl-D.
 warn("To exit: use 'exit', 'quit', or Ctrl-D.", stacklevel=1)

Вот остаток кода для справки:

"""
Shows basic usage of the Sheets API. Prints values from a Google 
Spreadsheet.
"""
from __future__ import print_function
from apiclient.discovery import build
from httplib2 import Http
from oauth2client import file, client, tools

# Setup the Sheets API
SCOPES = 'https://www.googleapis.com/auth/spreadsheets.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('sheets', 'v4', http=creds.authorize(Http()))
# Call the Sheets API
SPREADSHEET_ID = '1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms'
RANGE_NAME = 'Class Data!A2:E'
result = service.spreadsheets().values().get(spreadsheetId=SPREADSHEET_ID,
                                         range=RANGE_NAME).execute()
values = result.get('values', [])
if not values:
    print('No data found.')
else:
    print('Name, Major:')
    for row in values:
        # Print columns A and E, which correspond to indices 0 and 4.
        print('%s, %s' % (row[0], row[4]))

Редактировать

Создание пустого файла credentials.json устраняет большинство ошибок, но я все еще получаю сообщение «ошибка: нераспознанные аргументы».

Полный текст ошибки:

usage: ipykernel_launcher.py [--auth_host_name 
AUTH_HOST_NAME]
                         [--noauth_local_webserver]
                         [--auth_host_port [AUTH_HOST_PORT 
[AUTH_HOST_PORT ...]]]
                         [--logging_level 
{DEBUG,INFO,WARNING,ERROR,CRITICAL}]
ipykernel_launcher.py: error: unrecognized arguments: -f 
C:\Users\FIEND\AppData\Roaming\jupyter\runtime\kernel- 
c568600c-15a8-4f33-a635-409e218e40bf.json

1 Ответ

0 голосов
/ 30 апреля 2018

Вы должны создать пустой файл configuration.json. Github Google Issue .

Пожалуйста, выполните следующие шаги настройки для правильной аутентификации.

Шаг 1: Включить Drive API

  1. Используйте этот мастер для создания или выбора проекта в консоли разработчиков Google и автоматического включения API. Нажмите Продолжить, затем Перейти к учетным данным.

  2. На странице «Добавить учетные данные на страницу проекта» нажмите кнопку «Отмена».

  3. В верхней части страницы выберите вкладку экрана согласия OAuth. Выберите адрес электронной почты, введите название продукта, если оно еще не установлено, и нажмите кнопку Сохранить.

  4. Выберите вкладку Учетные данные, нажмите кнопку Создать учетные данные и выберите идентификатор клиента OAuth.

  5. Выберите тип приложения Другое, введите имя «Быстрый запуск Drive API» и нажмите кнопку «Создать».

  6. Нажмите кнопку ОК, чтобы закрыть открытое диалоговое окно.

  7. Нажмите кнопку file_download (Download JSON) справа от идентификатора клиента.

  8. Переместите этот файл в рабочий каталог и переименуйте его в client_secret.json.

Документация: https://developers.google.com/drive/v3/web/quickstart/python

UPDATE

По-видимому, существует конфликт между argparse и Jupyter [Ссылка]

и oauth2client использует argparse Github Code Link

Я сам не пользовался Jupyter, но если вы можете, попробуйте использовать свой API-код google drive независимо без Jupyter.

...