Аутентификация в API Gsuite без учетной записи службы - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь прочитать таблицу Google, используя свои локальные учетные данные (т.е. не учетную запись службы). Я в основном делаю:

from googleapiclient.discovery import build

service = build('sheets', 'v4')
request = sheet_service.spreadsheets().values().get(spreadsheetId=SPREADSHEET_ID, range='{}!A1:a4'.format(SHEET_NAME))
result = request.execute()
values = result.get('values', [])

Однако я получаю следующую ошибку:

Traceback (most recent call last):
  File "./update_incidents_tracker.py", line 54, in <module>
    sys.exit(main())
  File "./update_incidents_tracker.py", line 48, in main
    result = request.execute()
  File "/home/filip/.virtualenvs/monitoring-tools/lib/python3.6/site-packages/googleapiclient/_helpers.py", line 134, in positional_wrapper
    return wrapped(*args, **kwargs)
  File "/home/filip/.virtualenvs/monitoring-tools/lib/python3.6/site-packages/googleapiclient/http.py", line 898, in execute
    raise HttpError(resp, content, uri=self.uri)
googleapiclient.errors.HttpError: <HttpError 403 when requesting https://sheets.googleapis.com/v4/spreadsheets/1lTcQ3WknG_2oZvy9O9LEbgAzoykOWaheYSaDkkV21wE/values/Incidents%21A1%3Aa4?alt=json returned "Request had insufficient authentication scopes.">

Я не могу найти способ установить области для своего локального (gcloud SDK ) учетные данные. Как я могу установить правильные области?

Для справки для аутентификации на основе учетной записи службы я могу просто запустить:

credentials = service_account.Credentials.from_service_account_file(CREDENTIALS_FILE, scopes=SCOPES)
build('sheets', 'v4', credentials=credentials)

1 Ответ

0 голосов
/ 16 апреля 2020

Используйте учетные данные по умолчанию в явном виде и установите область действия в это время

import google.auth

credentials, project_id = google.auth.default(scopes=....)
build('sheets', 'v4', credentials=credentials)
....

Полная документация google-auth здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...