Создайте Google API access_token в Google Colab из Python - PullRequest
1 голос
/ 17 февраля 2020

Мне нужно сгенерировать access_token с некоторыми указанными c областями действия ['https://www.googleapis.com/auth/bigquery', 'https://www.googleapis.com/auth/cloud-platform'] из Python внутри Google Colab.

По умолчанию Google Colab предоставляет функцию внутри colabtools для аутентификации пользователя.

from google.colab import auth
auth.authenticate_user()
print('Authenticated')

Но созданный файл учетных данных содержит список фиксированных областей, не включая те, которые мне нужны.

import os
with open(os.environ['GOOGLE_APPLICATION_CREDENTIALS']) as f:
  print(f.read())
...
"scopes": [
    "https://www.googleapis.com/auth/drive",
    "https://www.googleapis.com/auth/appengine.admin",
    "https://www.googleapis.com/auth/accounts.reauth",
    "https://www.googleapis.com/auth/cloud-platform",
    "https://www.googleapis.com/auth/compute",
    "https://www.googleapis.com/auth/userinfo.email"
  ],
...

Я пытался создать действительный токен учетных данных с библиотекой google-auth enter code here, используя класс google.auth.Credentials , а также класс google.oauth2.Credentials . Я могу сгенерировать допустимые экземпляры классов, но когда я проверяю, что токен равен None.

Есть ли способ сгенерировать действительный access_token для API Google с пользовательскими областями из Python?

Спасибо!

1 Ответ

0 голосов
/ 17 февраля 2020

Если вы используете виртуальную машину с Google Colab, вы можете установить области для служебной учетной записи этого виртуального компьютера с помощью следующей команды (пример):

gcloud compute instances set-service-account example-instance \
   --service-account my-sa-123@my-project-123.iam.gserviceaccount.com \
   --scopes compute-rw,storage-ro

Затем при аутентификации из Python сгенерированные учетные данные будут содержать правильные области.

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