Доступ к Google Sheet API с учетными данными приложения по умолчанию - PullRequest
0 голосов
/ 24 апреля 2020

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

Я могу получить кредиты по умолчанию для приложения, но у меня возникают проблемы с областями видимости (так как мне не хватает https://www.googleapis.com/auth/spreadsheets.readonly объем). См. Приведенный ниже код:

from googleapiclient.discovery import build
from oauth2client import client

creds=client.GoogleCredentials.get_application_default()
service = build('sheets', 'v4', credentials=creds)
sheet = service.spreadsheets()
sheet.values().get(spreadsheetId='XXXXXXXXXX', range='Sheet1!A:C').execute()

Вывод:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.5/dist-packages/oauth2client/_helpers.py", line 133, in positional_wrapper
    return wrapped(*args, **kwargs)
  File "/usr/local/lib/python3.5/dist-packages/googleapiclient/http.py", line 840, in execute
    raise HttpError(resp, content, uri=self.uri)
googleapiclient.errors.HttpError: <HttpError 403 when requesting https://sheets.googleapis.com/v4/spreadsheets/XXXXXX/values/Sheet1%21A%3AC?alt=json returned "Request had insufficient authentication scopes.">

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

Есть ли способ использовать Application Default и добавить необходимую область?

1 Ответ

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

Ответ:

Вам необходимо определить свои области действия в методе create_scoped() GoogleCredentials.get_application_default().

Фрагмент кода:

creds = GoogleCredentials.get_application_default().create_scoped(
          ['https://www.googleapis.com/auth/spreadsheets.readonly'])

Я надеюсь, что это полезно для вас!

Ссылки:

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